Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
AccessLevelTrait
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 highestAccessLevel
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3namespace MediaWiki\IPInfo;
4
5use MediaWiki\IPInfo\Rest\Presenter\DefaultPresenter;
6
7trait AccessLevelTrait {
8    /**
9     * Get the highest access level user has permissions for.
10     *
11     * @param string[] $permissions
12     * @return ?string null if the user has no rights to see IP information
13     */
14    public function highestAccessLevel( array $permissions ): ?string {
15        // An ordered list of the access levels for viewing IP information, ordered
16        // from lowest to highest level.
17        // Should be kept up to date with DefaultPresenter::VIEWING_RIGHTS
18        $levels = [
19            DefaultPresenter::IPINFO_VIEW_BASIC_RIGHT,
20            DefaultPresenter::IPINFO_VIEW_FULL_RIGHT,
21        ];
22
23        $highestLevel = null;
24        foreach ( $levels as $level ) {
25            if ( in_array( $level, $permissions ) ) {
26                $highestLevel = $level;
27            }
28        }
29
30        return $highestLevel;
31    }
32}