Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
48 / 48
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
AccountWidget
100.00% covered (success)
100.00%
48 / 48
100.00% covered (success)
100.00%
3 / 3
9
100.00% covered (success)
100.00%
1 / 1
 render
100.00% covered (success)
100.00%
34 / 34
100.00% covered (success)
100.00%
1 / 1
4
 whatToShow
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
 renderJS
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3class AccountWidget
4{
5    // to avoid flickering, I need to setup the original values also directly in the html
6    // as the javascript update is too late and it would "flicker" when the page is begin loaded
7    public static function render($timeMode)
8    {
9        if(!Auth::isLoggedIn())
10            return;
11        if (Auth::isInTimeMode())
12        {
13            $barClassname = 'xp-bar-fill-c3';
14            $barRatio = Util::getRatio($timeMode->currentOrder - 1, $timeMode->overallCount);
15            $accountBarClassname = '';
16            $barText = 'Time mode ' . $timeMode->getCurrentRank();
17            $textBarInMenu = 'Level bar';
18            $modeSelectorClass = 'modeSelectorInLevelBar';
19        }
20        elseif (Util::getCookie('showInAccountWidget') == 'rating')
21        {
22            $textBarInMenu = "Level Bar";
23            $barClassname = 'xp-bar-fill-c2';
24            $accountBarClassname = 'account-bar-rating';
25            $rank = Rating::getRankFromRating(Auth::getUser()['rating']);
26            $rankStart = Rating::getRankMinimalRating($rank);
27            $nextRank = Rating::getRankMinimalRating($rank + 1);
28            $rankSize = $nextRank - $rankStart;
29            $barRatio = (Auth::getUser()['rating'] - $rankStart) / $rankSize;
30            $barText = Rating::getReadableRankFromRating(Auth::getUser()['rating']);
31            $modeSelectorClass = 'modeSelectorInRatingBar';
32        }
33        else
34        {
35            $textBarInMenu = "Rating Bar";
36            $barClassname = 'xp-bar-fill-c1';
37            $accountBarClassname = 'account-bar-level';
38            $barRatio = Auth::getUser()['xp'] / Level::getXPForNext(Auth::getUser()['level']);
39            $barText = 'Level ' . Auth::getUser()['level'];
40            $modeSelectorClass = 'modeSelectorInLevelBar';
41        }
42
43        echo '<div id="account-bar-wrapper" onmouseover="accountWidget.hover();" onmouseout="accountWidget.noHover();">
44                  <div id="account-bar">
45                        <div id="account-bar-user" class="account-bar-user-class">
46                            <a href="/users/view/' . Auth::getUserID() . '">
47                                ' . Auth::getUser()['name'] . '
48                            </a>
49                        </div>
50                        <div id="xp-bar">
51                              <div id="xp-bar-fill" class="' . $barClassname . '" style="width: ' . $barRatio * 100 . '%">
52                                    <div id="xp-increase-fx" style="display:none;">
53                                        <div id="xp-increase-fx-flicker">
54                                            <div class="xp-increase-glow1"></div>
55                                            <div class="xp-increase-glow2"></div>
56                                            <div class="xp-increase-glow3"></div>
57                                        </div>
58                                        <div class="xp-increase-glow2"></div>
59                                    </div>
60                                </div>
61                            </div>
62                        <div id="account-bar-xp-wrapper">
63                            <div id="account-bar-xp" class="' . $accountBarClassname . '">' . $barText . '</div>
64                        </div>
65                    </div>
66                </div>
67            <div id="heroProfile" onmouseover="accountWidget.hover();" onmouseout="accountWidget.noHover();">
68                <li><a href="/users/view/' . Auth::getUserID() . '">Profile</a></li>
69            </div>
70            <div id="heroBar" onmouseover="accountWidget.hover();" onmouseout="accountWidget.noHover();">
71                    <li><a id="textBarInMenu" onclick="accountWidget.switchBarInMenu()">' . $textBarInMenu . '</a></li>
72                </div>
73            <div id="heroAchievements" onmouseover="accountWidget.hover();" onmouseout="accountWidget.noHover();">
74                <li><a href="/achievements">Achievements</a></li>
75            </div>
76            <div id="heroLogout" onmouseover="accountWidget.hover();" onmouseout="accountWidget.noHover();">
77                <li><a href="/users/logout">Sign Out</a></li>
78            </div>
79            <div id="modeSelector" class="' . $modeSelectorClass . '" onclick="accountWidget.switchBarInMenu();"></div>';
80    }
81
82    private static function whatToShow()
83    {
84        if (Auth::isInTimeMode())
85            return 'time';
86        if (Util::getCookie('showInAccountWidget') == 'rating')
87            return 'rating';
88        return 'level';
89    }
90
91    public static function renderJS($timeMode)
92    {
93        echo "var accountWidget =";
94        if (Auth::isLoggedIn())
95            echo " new AccountWidget(
96                {
97                    rating: " . Auth::getUser()['rating'] . ",
98                    xp: " . Auth::getUser()['xp'] . ",
99                    level: " . Auth::getUser()['level'] . ",
100                    show: '" . AccountWidget::whatToShow() . "',
101                    timeMode: " . $timeMode->exportTimeModeInfo() . "});";
102        else
103            echo "null;";
104    }
105}