Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
58.65% covered (warning)
58.65%
217 / 370
29.41% covered (danger)
29.41%
5 / 17
CRAP
0.00% covered (danger)
0.00%
0 / 1
AppController
58.08% covered (warning)
58.08%
212 / 365
29.41% covered (danger)
29.41%
5 / 17
1498.30
0.00% covered (danger)
0.00%
0 / 1
 isHtmxRequest
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 renderPartial
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 getDeletedSets
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
12
 getStartpage
93.75% covered (success)
93.75%
15 / 16
0.00% covered (danger)
0.00%
0 / 1
5.01
 handleContribution
53.33% covered (warning)
53.33%
8 / 15
0.00% covered (danger)
0.00%
0 / 1
2.41
 getAllTags
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 encrypt
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 checkPictureLarge
66.67% covered (warning)
66.67%
2 / 3
0.00% covered (danger)
0.00%
0 / 1
3.33
 checkPicture
66.67% covered (warning)
66.67%
2 / 3
0.00% covered (danger)
0.00%
0 / 1
3.33
 saveDanSolveCondition
100.00% covered (success)
100.00%
17 / 17
100.00% covered (success)
100.00%
1 / 1
7
 updateSprintCondition
94.44% covered (success)
94.44%
17 / 18
0.00% covered (danger)
0.00%
0 / 1
4.00
 updateGoldenCondition
94.12% covered (success)
94.12%
16 / 17
0.00% covered (danger)
0.00%
0 / 1
3.00
 setPotionCondition
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
6
 updateGems
3.85% covered (danger)
3.85%
4 / 104
0.00% covered (danger)
0.00%
0 / 1
2183.48
 handleSearchSettings
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
2
 signIn
83.33% covered (warning)
83.33%
5 / 6
0.00% covered (danger)
0.00%
0 / 1
2.02
 beforeFilter
87.60% covered (warning)
87.60%
106 / 121
0.00% covered (danger)
0.00%
0 / 1
50.03
 afterFilter
n/a
0 / 0
n/a
0 / 0
1
1<?php
2
3App::uses('Auth', 'Utility');
4App::uses('BoardSelector', 'Utility');
5App::uses('TsumegoFilters', 'Utility');
6App::uses('AchievementChecker', 'Utility');
7App::uses('TimeMode', 'Utility');
8
9class AppController extends Controller
10{
11    public $viewClass = 'App';
12
13    public $helpers = ['Pagination', 'AssetCompress.AssetCompress'];
14
15    public $components = [
16        //'DebugKit.Toolbar',
17        'PlayResultProcessor'
18    ];
19
20    /**
21     * Check if the current request is an HTMX request.
22     *
23     * @return bool True if this is an HTMX AJAX request
24     */
25    protected function isHtmxRequest(): bool
26    {
27        return $this->request->header('HX-Request') === 'true';
28    }
29
30    /**
31     * Render a partial view (element) without layout for HTMX requests.
32     *
33     * @param string $element The element path (e.g., 'TsumegoIssues/list')
34     * @param array $data Variables to pass to the element
35     * @return void
36     */
37    protected function renderPartial(string $element, array $data = []): void
38    {
39        $this->autoRender = false;
40        $view = new View($this);
41        $html = $view->element($element, $data);
42        $this->response->body($html);
43    }
44
45    protected function getDeletedSets()
46    {
47        $dSets = [];
48        $de = $this->Set->find('all', ['conditions' => ['public' => -1]]);
49        if (!$de)
50            $de = [];
51        foreach ($de as $item)
52            $dSets[] = $item['Set']['id'];
53
54        return $dSets;
55    }
56
57    public static function getStartpage(): string
58    {
59        $result = '';
60        $latest = ClassRegistry::init('AchievementStatus')->find('all', ['limit' => 7, 'order' => 'created DESC']) ?: [];
61        $latestCount = count($latest);
62        for ($i = 0; $i < $latestCount; $i++)
63        {
64            $a = ClassRegistry::init('Achievement')->findById($latest[$i]['AchievementStatus']['achievement_id']);
65            $u = ClassRegistry::init('User')->findById($latest[$i]['AchievementStatus']['user_id']);
66            if (substr($u['User']['name'], 0, 3) == 'g__' && $u['User']['external_id'] != null)
67                $startPageUser = AppController::checkPicture($u);
68            else
69                $startPageUser = $u['User']['name'];
70            $latest[$i]['AchievementStatus']['name'] = $a['Achievement']['name'];
71            $latest[$i]['AchievementStatus']['color'] = $a['Achievement']['color'];
72            $latest[$i]['AchievementStatus']['image'] = $a['Achievement']['image'];
73            $latest[$i]['AchievementStatus']['user'] = $startPageUser;
74            $result .= '<div class="quote1"><div class="quote1a"><a href="/achievements/view/' . $a['Achievement']['id'] . '"><img src="/img/' . $a['Achievement']['image'] . '.png" width="34px"></a></div>';
75            $result .= '<div class="quote1b">Achievement gained by ' . $startPageUser . ':<br><div class=""><b>' . $a['Achievement']['name'] . '</b></div></div></div>';
76        }
77        return $result;
78    }
79
80    /**
81     * @param int $uid User ID
82     * @param string $action Action type
83     *
84     * @return void
85     */
86    public static function handleContribution($uid, $action)
87    {
88        $uc = ClassRegistry::init('UserContribution')->find('first', ['conditions' => ['user_id' => $uid]]);
89        if ($uc == null)
90        {
91            $uc = [];
92            $uc['UserContribution']['user_id'] = $uid;
93            $uc['UserContribution']['created_tag'] = 0;
94            $uc['UserContribution']['made_proposal'] = 0;
95            $uc['UserContribution']['reviewed'] = 0;
96            $uc['UserContribution']['score'] = 0;
97            ClassRegistry::init('UserContribution')->create();
98        }
99        $uc['UserContribution'][$action] += 1;
100        $uc['UserContribution']['score']
101        = $uc['UserContribution']['created_tag'] * 3
102        + $uc['UserContribution']['made_proposal'] * 5
103        + $uc['UserContribution']['reviewed'] * 2;
104        ClassRegistry::init('UserContribution')->save($uc);
105    }
106
107    public static function getAllTags()
108    {
109        return Util::query("SELECT * from tag WHERE approved = 1 ORDER BY tag.name");
110    }
111
112    public static function encrypt($str = null)
113    {
114        $secret_key = 'my_simple_secret_keyx';
115        $secret_iv = 'my_simple_secret_ivx';
116        $encrypt_method = 'AES-256-CBC';
117        $key = hash('sha256', $secret_key);
118        $iv = substr(hash('sha256', $secret_iv), 0, 16);
119
120        return base64_encode(openssl_encrypt($str, $encrypt_method, $key, 0, $iv));
121    }
122
123    protected function checkPictureLarge($u)
124    {
125        if (substr($u['User']['name'], 0, 3) == 'g__' && $u['User']['external_id'] != null)
126            return '<img class="google-profile-image-large" src="/img/google/' . $u['User']['picture'] . '">' . substr($u['User']['name'], 3);
127
128        return $u['User']['name'];
129    }
130    public static function checkPicture($user)
131    {
132        if (substr($user['name'], 0, 3) == 'g__' && $user['external_id'] != null)
133            return '<img class="google-profile-image" src="/img/google/' . $user['picture'] . '">' . substr($user['name'], 3);
134
135        return $user['name'];
136    }
137
138    public static function saveDanSolveCondition($solvedTsumegoRank, $tId): void
139    {
140        if ($solvedTsumegoRank == '1d' || $solvedTsumegoRank == '2d' || $solvedTsumegoRank == '3d' || $solvedTsumegoRank == '4d' || $solvedTsumegoRank == '5d')
141        {
142            $danSolveCategory = 'danSolve' . $solvedTsumegoRank;
143            $danSolveCondition = ClassRegistry::init('AchievementCondition')->find('first', [
144                'order' => 'value DESC',
145                'conditions' => [
146                    'user_id' => Auth::getUserID(),
147                    'category' => $danSolveCategory,
148                ],
149            ]);
150            if (!$danSolveCondition)
151            {
152                $danSolveCondition = [];
153                $danSolveCondition['AchievementCondition']['value'] = 0;
154                ClassRegistry::init('AchievementCondition')->create();
155            }
156            $danSolveCondition['AchievementCondition']['category'] = $danSolveCategory;
157            $danSolveCondition['AchievementCondition']['user_id'] = Auth::getUserID();
158            $danSolveCondition['AchievementCondition']['value']++;
159
160            ClassRegistry::init('AchievementCondition')->save($danSolveCondition);
161        }
162    }
163
164    public static function updateSprintCondition(bool $trigger = false): void
165    {
166        if (Auth::isLoggedIn())
167        {
168            $sprintCondition = ClassRegistry::init('AchievementCondition')->find('first', [
169                'order' => 'value DESC',
170                'conditions' => [
171                    'user_id' => Auth::getUserID(),
172                    'category' => 'sprint',
173                ],
174            ]);
175            if (!$sprintCondition)
176            {
177                $sprintCondition = [];
178                $sprintCondition['AchievementCondition']['value'] = 0;
179                ClassRegistry::init('AchievementCondition')->create();
180            }
181            $sprintCondition['AchievementCondition']['category'] = 'sprint';
182            $sprintCondition['AchievementCondition']['user_id'] = Auth::getUserID();
183            if ($trigger)
184                $sprintCondition['AchievementCondition']['value']++;
185            else
186                $sprintCondition['AchievementCondition']['value'] = 0;
187            ClassRegistry::init('AchievementCondition')->save($sprintCondition);
188        }
189    }
190
191    public static function updateGoldenCondition(bool $trigger = false): void
192    {
193        $goldenCondition = ClassRegistry::init('AchievementCondition')->find('first', [
194            'order' => 'value DESC',
195            'conditions' => [
196                'user_id' => Auth::getUserID(),
197                'category' => 'golden',
198            ],
199        ]);
200        if (!$goldenCondition)
201        {
202            $goldenCondition = [];
203            $goldenCondition['AchievementCondition']['value'] = 0;
204            ClassRegistry::init('AchievementCondition')->create();
205        }
206        $goldenCondition['AchievementCondition']['category'] = 'golden';
207        $goldenCondition['AchievementCondition']['user_id'] = Auth::getUserID();
208        if ($trigger)
209            $goldenCondition['AchievementCondition']['value']++;
210        else
211            $goldenCondition['AchievementCondition']['value'] = 0;
212        ClassRegistry::init('AchievementCondition')->save($goldenCondition);
213    }
214
215    public static function setPotionCondition(): void
216    {
217        $potionCondition = ClassRegistry::init('AchievementCondition')->find('first', [
218            'order' => 'value DESC',
219            'conditions' => [
220                'user_id' => Auth::getUserID(),
221                'category' => 'potion',
222            ],
223        ]);
224        if (!$potionCondition)
225        {
226            $potionCondition = [];
227            ClassRegistry::init('AchievementCondition')->create();
228        }
229        $potionCondition['AchievementCondition']['category'] = 'potion';
230        $potionCondition['AchievementCondition']['user_id'] = Auth::getUserID();
231        $potionCondition['AchievementCondition']['value'] = 1;
232        ClassRegistry::init('AchievementCondition')->save($potionCondition);
233    }
234
235    public static function updateGems(string $rank): void
236    {
237        $datex = new DateTime('today');
238        $dateGem = ClassRegistry::init('DayRecord')->find('first', ['conditions' => ['date' => $datex->format('Y-m-d')]]);
239        if ($dateGem != null)
240        {
241            $gems = explode('-', $dateGem['DayRecord']['gems']);
242            $gemValue = '';
243            $gemValue2 = '';
244            $gemValue3 = '';
245            $condition1 = 500;
246            $condition2 = 200;
247            $condition3 = 5;
248            $found1 = false;
249            $found2 = false;
250            $found3 = false;
251            if ($rank == '15k' || $rank == '14k' || $rank == '13k' || $rank == '12k' || $rank == '11k' || $rank == '10k')
252            {
253                if ($gems[0] == 0)
254                    $gemValue = '15k';
255                elseif ($gems[0] == 1)
256                    $gemValue = '12k';
257                elseif ($gems[0] == 2)
258                    $gemValue = '10k';
259                if ($rank == $gemValue)
260                {
261                    $dateGem['DayRecord']['gemCounter1']++;
262                    if ($dateGem['DayRecord']['gemCounter1'] == $condition1)
263                        $found1 = true;
264                }
265            }
266            elseif ($rank == '9k' || $rank == '8k' || $rank == '7k' || $rank == '6k' || $rank == '5k' || $rank == '4k' || $rank == '3k' || $rank == '2k' || $rank == '1k')
267            {
268                if ($gems[1] == 0)
269                {
270                    $gemValue = '9k';
271                    $gemValue2 = 'x';
272                    $gemValue3 = 'y';
273                }
274                elseif ($gems[1] == 1)
275                {
276                    $gemValue = '6k';
277                    $gemValue2 = '5k';
278                    $gemValue3 = '4k';
279                }
280                elseif ($gems[1] == 2)
281                {
282                    $gemValue = 'x';
283                    $gemValue2 = '2k';
284                    $gemValue3 = '1k';
285                }
286                if ($rank == $gemValue || $rank == $gemValue2 || $rank == $gemValue3)
287                {
288                    $dateGem['DayRecord']['gemCounter2']++;
289                    if ($dateGem['DayRecord']['gemCounter2'] == $condition2)
290                        $found2 = true;
291                }
292            }
293            elseif ($rank == '1d' || $rank == '2d' || $rank == '3d' || $rank == '4d' || $rank == '5d' || $rank == '6d' || $rank == '7d')
294            {
295                if ($gems[2] == 0)
296                {
297                    $gemValue = '1d';
298                    $gemValue2 = '2d';
299                    $gemValue3 = '3d';
300                }
301                elseif ($gems[2] == 1)
302                {
303                    $gemValue = '2d';
304                    $gemValue2 = '3d';
305                    $gemValue3 = '4d';
306                }
307                elseif ($gems[2] == 2)
308                {
309                    $gemValue = '5d';
310                    $gemValue2 = '6d';
311                    $gemValue3 = '7d';
312                }
313                if ($rank == $gemValue || $rank == $gemValue2 || $rank == $gemValue3)
314                {
315                    $dateGem['DayRecord']['gemCounter3']++;
316                    if ($dateGem['DayRecord']['gemCounter3'] == $condition3)
317                        $found3 = true;
318                }
319            }
320            if ($found1)
321            {
322                $aCondition = ClassRegistry::init('AchievementCondition')->find('first', [
323                    'order' => 'value DESC',
324                    'conditions' => [
325                        'user_id' => Auth::getUserID(),
326                        'category' => 'emerald',
327                    ],
328                ]);
329                if ($aCondition == null)
330                {
331                    $aCondition = [];
332                    $aCondition['AchievementCondition']['category'] = 'emerald';
333                    $aCondition['AchievementCondition']['user_id'] = Auth::getUserID();
334                    $aCondition['AchievementCondition']['value'] = 1;
335                    ClassRegistry::init('AchievementCondition')->save($aCondition);
336                }
337                else
338                    $dateGem['DayRecord']['gemCounter1']--;
339            }
340            elseif ($found2)
341            {
342                $aCondition = ClassRegistry::init('AchievementCondition')->find('first', [
343                    'order' => 'value DESC',
344                    'conditions' => [
345                        'user_id' => Auth::getUserID(),
346                        'category' => 'sapphire',
347                    ],
348                ]);
349                if ($aCondition == null)
350                {
351                    $aCondition = [];
352                    $aCondition['AchievementCondition']['category'] = 'sapphire';
353                    $aCondition['AchievementCondition']['user_id'] = Auth::getUserID();
354                    $aCondition['AchievementCondition']['value'] = 1;
355                    ClassRegistry::init('AchievementCondition')->save($aCondition);
356                }
357                else
358                    $dateGem['DayRecord']['gemCounter2']--;
359            }
360            elseif ($found3)
361            {
362                $aCondition = ClassRegistry::init('AchievementCondition')->find('first', [
363                    'order' => 'value DESC',
364                    'conditions' => [
365                        'user_id' => Auth::getUserID(),
366                        'category' => 'ruby',
367                    ],
368                ]);
369                if ($aCondition == null)
370                {
371                    $aCondition = [];
372                    $aCondition['AchievementCondition']['category'] = 'ruby';
373                    $aCondition['AchievementCondition']['user_id'] = Auth::getUserID();
374                    $aCondition['AchievementCondition']['value'] = 1;
375                    ClassRegistry::init('AchievementCondition')->save($aCondition);
376                }
377                else
378                    $dateGem['DayRecord']['gemCounter3']--;
379            }
380        }
381        ClassRegistry::init('DayRecord')->save($dateGem);
382    }
383
384    /**
385     * @param int $uid User ID
386     * @return void
387     */
388    protected function handleSearchSettings($uid)
389    {
390        $this->loadModel('UserContribution');
391        $uc = $this->UserContribution->find('first', ['conditions' => ['user_id' => $uid]]);
392        if ($uc == null)
393        {
394            $uc = [];
395            $uc['UserContribution']['user_id'] = $uid;
396            $uc['UserContribution']['created_tag'] = 0;
397            $uc['UserContribution']['made_proposal'] = 0;
398            $uc['UserContribution']['reviewed'] = 0;
399            $uc['UserContribution']['score'] = 0;
400            $this->UserContribution->create();
401            $this->UserContribution->save($uc);
402        }
403        new TsumegoFilters();
404    }
405
406    protected function signIn(array $user): void
407    {
408        Auth::init($user);
409        $vs = $this->TsumegoStatus->find('first', ['conditions' => ['user_id' => $user['User']['id']], 'order' => 'updated DESC']);
410        if ($vs)
411            Util::setCookie('lastVisit', $vs['TsumegoStatus']['tsumego_id']);
412        Util::setCookie('texture', $user['User']['texture']);
413        Util::setCookie('check1', $user['User']['id']);
414    }
415
416    public function beforeFilter(): void
417    {
418        $this->loadModel('User');
419        $this->loadModel('Activate');
420        $this->loadModel('Tsumego');
421        $this->loadModel('Set');
422        $this->loadModel('TimeModeAttempt');
423        $this->loadModel('TsumegoStatus');
424        $this->loadModel('TsumegoAttempt');
425        $this->loadModel('AdminActivity');
426        $this->loadModel('Achievement');
427        $this->loadModel('AchievementStatus');
428        $this->loadModel('AchievementCondition');
429        $this->loadModel('SetConnection');
430        $this->loadModel('Tag');
431        $this->loadModel('Favorite');
432
433        Auth::init();
434        $timeMode = new TimeMode();
435
436        $highscoreLink = 'highscore';
437        $lightDark = 'light';
438        $resetCookies = false;
439        $levelBar = 1;
440        $lastProfileLeft = 1;
441        $lastProfileRight = 2;
442        $hasFavs = false;
443
444        if (Auth::isLoggedIn())
445        {
446            if ($lastTimeModeCategoryID = Util::clearCookie('lastTimeModeCategoryID'))
447                Auth::getUser()['last_time_mode_category_id'] = $lastTimeModeCategoryID;
448            if (isset($_COOKIE['z_sess']) && $_COOKIE['z_sess'] != 0
449            && strlen($_COOKIE['z_sess']) > 5)
450            {
451                Auth::getUser()['_sessid'] = $_COOKIE['z_sess'];
452                Auth::saveUser();
453            }
454            if (Auth::getUser()['lastHighscore'] == 1)
455                $highscoreLink = 'highscore';
456            elseif (Auth::getUser()['lastHighscore'] == 2)
457                $highscoreLink = 'rating';
458            elseif (Auth::getUser()['lastHighscore'] == 3)
459                $highscoreLink = 'leaderboard';
460            elseif (Auth::getUser()['lastHighscore'] == 4)
461                $highscoreLink = 'highscore3';
462
463            if (isset($_COOKIE['lastMode']) && $_COOKIE['lastMode'] != 0)
464            {
465                Auth::getUser()['lastMode'] = $_COOKIE['lastMode'];
466                Auth::saveUser();
467            }
468            if (isset($_COOKIE['sound']) && $_COOKIE['sound'] != '0')
469            {
470                Auth::getUser()['sound'] = $_COOKIE['sound'];
471                Auth::saveUser();
472                unset($_COOKIE['sound']);
473            }
474            $this->set('ac', true);
475            $this->set('user', Auth::getUser());
476        }
477
478        if (isset($_COOKIE['lightDark']) && $_COOKIE['lightDark'] != '0')
479        {
480            $lightDark = $_COOKIE['lightDark'];
481            if (Auth::isLoggedIn())
482            {
483                // Convert string to integer for database storage
484                $lightDarkInt = ($lightDark === 'light') ? 0 : 2;
485                Auth::getUser()['lastLight'] = $lightDarkInt;
486            }
487        }
488        elseif (Auth::isLoggedIn())
489            if (Auth::getUser()['lastLight'] == 0
490            || Auth::getUser()['lastLight'] == 1)
491                $lightDark = 'light';
492            else
493                $lightDark = 'dark';
494
495        if (Auth::isLoggedIn())
496        {
497            $this->handleSearchSettings(Auth::getUserID());
498            if (isset($_COOKIE['levelBar']) && $_COOKIE['levelBar'] != '0')
499            {
500                $levelBar = $_COOKIE['levelBar'];
501                Auth::getUser()['levelBar'] = $levelBar;
502            }
503            elseif (Auth::getUser()['levelBar'] == 0
504          || Auth::getUser()['levelBar'] == 'level')
505              $levelBar = 1;
506            else
507                $levelBar = 2;
508
509            if (isset($_COOKIE['lastProfileLeft']) && $_COOKIE['lastProfileLeft'] != '0')
510            {
511                $lastProfileLeft = $_COOKIE['lastProfileLeft'];
512                Auth::getUser()['lastProfileLeft'] = $lastProfileLeft;
513            }
514            else
515            {
516                $lastProfileLeft = Auth::getUser()['lastProfileLeft'];
517                if ($lastProfileLeft == 0)
518                    $lastProfileLeft = 1;
519            }
520            if (isset($_COOKIE['lastProfileRight']) && $_COOKIE['lastProfileRight'] != '0')
521            {
522                $lastProfileRight = $_COOKIE['lastProfileRight'];
523                Auth::getUser()['lastProfileRight'] = $lastProfileRight;
524            }
525            else
526            {
527                $lastProfileRight = Auth::getUser()['lastProfileRight'];
528                if ($lastProfileRight == 0)
529                    $lastProfileRight = 1;
530            }
531        }
532        $mode = 1;
533        if (isset($_COOKIE['mode']) && $_COOKIE['mode'] != '0')
534            if ($_COOKIE['mode'] == 1)
535                $mode = 1;
536            else
537                $mode = 2;
538
539        if (Auth::isLoggedIn() && Auth::getUser()['mode'] == 2)
540            $mode = 2;
541
542        if ($_COOKIE['sprint'] != 1)
543            $this->updateSprintCondition();
544
545        if (Auth::isLoggedIn() && !$this->request->is('ajax') && !$this->isHtmxRequest())
546        {
547            $this->PlayResultProcessor->checkPreviousPlay($timeMode);
548            $achievementChecker = new AchievementChecker();
549            $achievementChecker->checkLevelAchievements();
550            $achievementChecker->checkProblemNumberAchievements();
551            $achievementChecker->checkRatingAchievements();
552            $achievementChecker->checkDanSolveAchievements();
553            $achievementChecker->checkNoErrorAchievements();
554            $achievementChecker->finalize();
555            $this->set('achievementUpdates', $achievementChecker->updated);
556        }
557        $boardNames = [];
558
559        if (!is_null($boardsBitmask = Util::clearCookie('boards_bitmask')))
560        {
561            if (Auth::isLoggedIn())
562            {
563                Auth::getUser()['boards_bitmask'] = BoardSelector::filterValidBits($boardsBitmask);
564                Auth::saveUser();
565            }
566        }
567        else
568            $boardsBitmask = BoardSelector::filterValidBits(Auth::isLoggedIn() ? Auth::getUser()['boards_bitmask'] : BoardSelector::$DEFAULT_BOARDS_BITMASK);
569
570        $this->set('boardsBitmask', $boardsBitmask);
571
572        $nextDay = new DateTime('tomorrow');
573        if (Auth::isLoggedIn())
574        {
575            Auth::getUser()['name'] = $this->checkPicture(Auth::getUser());
576            $this->set('user', Auth::getUser());
577        }
578        $this->set('mode', $mode);
579        $this->set('nextDay', $nextDay->format('m/d/Y'));
580        $this->set('boardNames', $boardNames);
581        $this->set('highscoreLink', $highscoreLink);
582        $this->set('lightDark', $lightDark);
583        $this->set('levelBar', $levelBar);
584        $this->set('lastProfileLeft', $lastProfileLeft);
585        $this->set('lastProfileRight', $lastProfileRight);
586        $this->set('resetCookies', $resetCookies);
587        $this->set('hasFavs', $hasFavs);
588        $this->set('timeMode', $timeMode);
589        if (Auth::isLoggedIn())
590            Auth::saveUser();
591    }
592
593    public function afterFilter() {}
594}