1 | <?php
|
---|
2 |
|
---|
3 | class ModuleUser extends Module
|
---|
4 | {
|
---|
5 | public User $User;
|
---|
6 |
|
---|
7 | function __construct(System $System)
|
---|
8 | {
|
---|
9 | parent::__construct($System);
|
---|
10 | $this->Name = 'User';
|
---|
11 | $this->Version = '1.1';
|
---|
12 | $this->Creator = 'Chronos';
|
---|
13 | $this->License = 'GNU/GPL';
|
---|
14 | $this->Description = 'User and permission management';
|
---|
15 | $this->Dependencies = array();
|
---|
16 |
|
---|
17 | $this->User = new User($this->System);
|
---|
18 | }
|
---|
19 |
|
---|
20 | function DoStart(): void
|
---|
21 | {
|
---|
22 | $this->System->RegisterPage(['users'], 'PageUserList');
|
---|
23 | $this->System->RegisterPage(['options'], 'PageUserOptions');
|
---|
24 | $this->System->RegisterPage(['registration'], 'PageUserRegistration');
|
---|
25 | $this->System->RegisterPage(['user'], 'PageUserProfile');
|
---|
26 | $this->System->RegisterPage(['login'], 'PageUserLogin');
|
---|
27 | Core::Cast($this->System)->RegisterMenuItem(array(
|
---|
28 | 'Title' => T('Translators'),
|
---|
29 | 'Hint' => 'Seznam registrovaných uživatelů',
|
---|
30 | 'Link' => $this->System->Link('/users/'),
|
---|
31 | 'Permission' => LICENCE_ANONYMOUS,
|
---|
32 | 'Icon' => '',
|
---|
33 | ), 0);
|
---|
34 | if (array_key_exists('Search', $this->System->ModuleManager->Modules))
|
---|
35 | $this->System->ModuleManager->Modules['Search']->RegisterSearch('user',
|
---|
36 | T('Translators'), array('Name'), '`User`', $this->System->Link('/users/?search='));
|
---|
37 | Core::Cast($this->System)->RegisterPageBarItem('Top', 'User', array($this, 'TopBarCallback'));
|
---|
38 | Core::Cast($this->System)->RegisterPageBarItem('Left', 'User', array($this, 'ShowOnlineList'));
|
---|
39 | }
|
---|
40 |
|
---|
41 | function ShowOnlineList()
|
---|
42 | {
|
---|
43 | $Output = T('Online translators').':<br />';
|
---|
44 | $DbResult = $this->System->Database->query('SELECT * FROM ('.
|
---|
45 | 'SELECT `User`.`Name`, `User`.`ID` FROM `UserOnline` '.
|
---|
46 | 'JOIN `User` ON `User`.`ID` = `UserOnline`.`User` '.
|
---|
47 | 'WHERE (`ActivityTime` >= NOW() - 300) '.
|
---|
48 | 'ORDER BY `ActivityTime` DESC ) AS `T` GROUP BY `Name`');
|
---|
49 | while ($DbUser = $DbResult->fetch_assoc())
|
---|
50 | {
|
---|
51 | $Name = '<a href="'.$this->System->Link('/user/?user='.$DbUser['ID']).'">'.$DbUser['Name'].'</a>';
|
---|
52 | $Output .= $Name.'<br />';
|
---|
53 | }
|
---|
54 | return $Output;
|
---|
55 | }
|
---|
56 |
|
---|
57 | function TopBarCallback()
|
---|
58 | {
|
---|
59 | $Output = '';
|
---|
60 | $User = ModuleUser::Cast($this->System->GetModule('User'))->User;
|
---|
61 | if ($User->Licence(LICENCE_USER))
|
---|
62 | {
|
---|
63 | //$DbResult =$this->Database->query('SELECT `Id`, `Name` FROM `Team` WHERE `Id`='.$this->System->User->Team);
|
---|
64 | //$Team = $DbResult->fetch_assoc();
|
---|
65 | //$Output .= ''<span class="MenuItem">Moje překlady: <a href="">Dokončené</a> <a href="">Rozpracované</a> <a href="">Exporty</a> Tým: <a href="">'.$Team['name'].'</a></span>';
|
---|
66 | $Output .= $User->Name.' <a href="'.$this->System->Link('/?action=logout').'">'.T('Logout').'</a>'.
|
---|
67 | ' <a href="'.$this->System->Link('/user/?user='.$User->Id).'">'.T('My page').'</a>'.
|
---|
68 | ' <a href="'.$this->System->Link('/options/').'">'.T('Options').'</a>'.
|
---|
69 | ' <a title="Vámi přeložené texty" href="'.$this->System->Link('/TranslationList.php?user='.
|
---|
70 | $User->Id.'&group=0&state=2&text=&entry=').'">'.T('Translated').'</a>'.
|
---|
71 | ' <a title="Vaše rozpracované text" href="'.$this->System->Link('/TranslationList.php?user='.
|
---|
72 | $User->Id.'&group=0&state=3&text=&entry=').'">'.T('Unfinished').'</a>'.
|
---|
73 | ' <a title="Nikým nepřeložené texty" href="'.
|
---|
74 | $this->System->Link('/TranslationList.php?user=0&group=0&state=1&text=&entry=').'">'.T('Untranslated').'</a>';
|
---|
75 | } else
|
---|
76 | {
|
---|
77 | $Output .= '<a href="'.$this->System->Link('/login/').'">'.T('Login').'</a> '.
|
---|
78 | '<a href="'.$this->System->Link('/registration/').'">'.T('Registration').'</a>';
|
---|
79 | }
|
---|
80 | return $Output;
|
---|
81 | }
|
---|
82 |
|
---|
83 | static function Cast(Module $Module): ModuleUser
|
---|
84 | {
|
---|
85 | if ($Module instanceof ModuleUser)
|
---|
86 | {
|
---|
87 | return $Module;
|
---|
88 | }
|
---|
89 | throw new Exception('Expected '.ModuleUser::GetClassName().' type but got '.gettype($Module));
|
---|
90 | }
|
---|
91 | }
|
---|