source: trunk/index.php@ 349

Last change on this file since 349 was 349, checked in by chronos, 13 years ago
  • Opraveno: Korekce systému pěkných URL. Nyní podporují i přenos dotazovacího řetězce za znakem ?.
  • Property svn:executable set to *
File size: 16.2 KB
Line 
1<?php
2
3include_once('global.php');
4
5class IndexPage extends Page
6{
7 var $Dependencies = array('News');
8 var $FullTitle = 'Zděchovský rozcestník';
9 var $ShortTitle = '';
10
11 function ShowLinks($GroupId)
12 {
13 global $Database;
14
15 $DbResult = $Database->query('SELECT * FROM `HyperlinkGroup` WHERE `Id`='.$GroupId);
16 $HyperlinkGroup = $DbResult->fetch_assoc();
17
18 $Output = '';
19 $DbResult = $Database->query('SELECT * FROM `Hyperlink` WHERE (`Group`='.$GroupId.') AND (`Enable` = 1)');
20 while($HyperLink = $DbResult->fetch_assoc())
21 {
22 if($HyperLink['IconFile'] == '') $HyperLink['IconFile'] = 'clear.png';
23 if(substr($HyperLink['URL'], 0, 4) != 'http') $HyperLink['URL'] = $this->System->Config['Web']['RootFolder'].$HyperLink['URL'];
24 if(($HyperLink['PermissionModule'] == '') or (($HyperLink['PermissionModule'] != '') and $this->System->Models['User']->CheckPermission($HyperLink['PermissionModule'], $HyperLink['PermissionOperation'])))
25 $Output .= '<img alt="'.$HyperLink['Name'].'" src="images/favicons/'.$HyperLink['IconFile'].'" width="16" height="16" /> <a href="'.$HyperLink['URL'].'">'.$HyperLink['Name'].'</a><br />';
26 }
27 return($this->Panel($HyperlinkGroup['Name'], $Output));
28 }
29
30 function InfoBar()
31 {
32 global $Config;
33
34 $this->Database->select_db($Config['Database']['Database']);
35
36 $Output2 = '';
37
38 $DbResult = $this->Database->query('SELECT COUNT(*) FROM NetworkDevice LEFT JOIN NetworkDeviceType ON NetworkDeviceType.Id = NetworkDevice.Type WHERE NetworkDeviceType.ShowOnline = 1');
39 $DbRow = $DbResult->fetch_array();
40 $TotalComputers = $DbRow[0];
41
42 $DbResult = $this->Database->query('SELECT COUNT(*) FROM NetworkDevice LEFT JOIN NetworkDeviceType ON NetworkDeviceType.Id = NetworkDevice.Type WHERE (NetworkDeviceType.ShowOnline = 1) AND (NetworkDevice.Online = 1)');
43 $DbRow = $DbResult->fetch_array();
44 $OnlineComputers = $DbRow[0];
45
46 $Output = '<img alt="" src="images/favicons/comp.png" width="16" height="16" /> '.$OnlineComputers.' / '.$TotalComputers.' &nbsp; &nbsp; ';
47
48 $DbResult = $this->Database->select('Member', 'COUNT(*)', 'MemberState=0');
49 $DbRow = $DbResult->fetch_array();
50 $TotalUser = $DbRow[0];
51
52 $DbResult = $this->Database->query('SELECT COUNT(DISTINCT(Member)) FROM NetworkDevice LEFT JOIN NetworkDeviceType ON NetworkDeviceType.Id = NetworkDevice.Type WHERE NetworkDeviceType.ShowOnline = 1 AND NetworkDevice.Online = 1');
53 $DbRow = $DbResult->fetch_array();
54 $OnlineUser = $DbRow[0];
55
56 $Output .= '<img alt="" src="images/favicons/house.png" width="16" height="16" /> '.$OnlineUser.' / '.$TotalUser.' &nbsp; &nbsp; ';
57
58 $NetworkUsage = 0;
59 $Output .= '<img alt="" src="images/favicons/usage.png" width="16" height="16" /> '.$NetworkUsage.' % &nbsp; &nbsp; ';
60
61 //$Output .= 'Server běží: '.$this->GetServerUptime().' &nbsp; &nbsp; ';
62
63 if($this->System->Models['User']->CheckPermission('Finance', 'DisplaySubjectState'))
64 {
65 $DbResult = $this->Database->select('Subject', 'Money', 'Id=(SELECT Subject FROM Member WHERE Id=(SELECT Member FROM User WHERE Id='.$this->System->Models['User']->User['Id'].'))');
66 if($DbResult->num_rows > 0)
67 {
68 $DbRow = $DbResult->fetch_assoc();
69 $Output2 .= ' &nbsp; &nbsp; <img alt="" src="images/favicons/money.png" width="16" height="16" /> '.$DbRow['Money'].' Kč';
70 }
71 }
72
73 $Output = '<div class="Navigation"><span class="MenuItem">'.$Output.'</span><div class="MenuItem2">&nbsp;'.$Output2.'</div></div>';
74 return($Output);
75 }
76
77 function UserPanel()
78 {
79 $Output = '<a href="'.$this->System->Config['Web']['RootFolder'].'/?Action=UserOptions">Profil</a><br />';
80 if($this->System->Models['User']->CheckPermission('Finance', 'MemberOptions'))
81 $Output .= '<a href="'.$this->System->Config['Web']['RootFolder'].'?Action=MemberOptions">Domácnost</a><br />';
82 if($this->System->Models['User']->CheckPermission('Finance', 'DisplaySubjectState'))
83 $Output .= '<a href="'.$this->System->Config['Web']['RootFolder'].'/finance/user_state.php">Finance</a><br />';
84 if($this->System->Models['User']->CheckPermission('Network', 'RegistredHostList'))
85 $Output .= '<a href="'.$this->System->Config['Web']['RootFolder'].'/network/user_hosts.php">Počítače</a><br />';
86 if($this->System->Models['User']->CheckPermission('News', 'Insert'))
87 $Output .= '<a href="'.$this->System->Config['Web']['RootFolder'].'/aktuality/?action=add">Vložení aktuality</a><br />';
88 if($this->System->Models['User']->CheckPermission('EatingPlace', 'Edit'))
89 $Output .= '<a href="'.$this->System->Config['Web']['RootFolder'].'/jidelna/menuedit.php">Editace jídelníčků</a><br />';
90 if($this->System->Models['User']->CheckPermission('Finance', 'Manage'))
91 $Output .= '<a href="'.$this->System->Config['Web']['RootFolder'].'/finance/manage.php">Správa financí</a><br />';
92 if($this->System->Models['User']->CheckPermission('Network', 'Administration'))
93 $Output .= '<a href="'.$this->System->Config['Web']['RootFolder'].'/network/administration.php">Správa sítě</a><br />';
94 return($Output);
95 }
96
97 function WebcamPanel()
98 {
99 $Output = $this->System->Modules['WebCam']->ShowImage();
100 return($Output);
101 }
102
103 function OnlineHostList()
104 {
105 $Output = '<span style="font-size: smaller;">';
106 $DbResult = $this->Database->query('SELECT NetworkDevice.Name FROM NetworkDevice LEFT JOIN NetworkDeviceType ON NetworkDeviceType.Id = NetworkDevice.Type WHERE (NetworkDeviceType.ShowOnline = 1) AND (NetworkDevice.Online = 1) ORDER BY NetworkDevice.Name');
107 while($Device = $DbResult->fetch_array())
108 {
109 $Output .= $Device['Name'].'<br />';
110 }
111 $Output .= '</span>';
112 return($Output);
113 }
114
115 function ShowBadPayerList()
116 {
117 $Output .= '<div class="PanelTitle">Dlužníci:</div><span style="font-size: smaller;">';
118 $DbResult = $Database->select('Subject', 'Name', 'Money < 0 ORDER BY Money');
119 while($Row = $DbResult->fetch_array())
120 {
121 $Output .= $Row['Name'].'<br />';
122 }
123 $Output .= '</span>';
124 return($Output);
125 }
126
127 function Panel($Title, $Content, $Menu = array())
128 {
129 if(count($Menu) > 0)
130 foreach($Menu as $Item)
131 $Title .= '<div class="Action">'.$Item.'</div>';
132 return('<div class="Panel"><div class="Title">'.$Title.'</div><div class="Content">'.$Content.'</div></div>');
133 }
134
135 function Show()
136 {
137 global $Database, $Config, $User;
138
139 $Output = '';
140 if(array_key_exists('Action', $_GET))
141 {
142 if($_GET['Action'] == 'CustomizeNewsSave')
143 {
144 $Output .= $this->System->Modules['News']->CustomizeSave();
145 } else
146 if($_GET['Action'] == 'LoginForm')
147 {
148 $Form = new Form('UserLogin');
149 $Form->OnSubmit = '?Action=Login';
150 $Output .= $Form->ShowEditForm();
151 $Output .= '<div class="Centred"><a href="?Action=UserRegister">Registrovat se</a> '.
152 '<a href="?Action=PasswordRecovery">Obnova zapomenutého hesla</a></div>';
153 } else
154 if($_GET['Action'] == 'Login')
155 {
156 $Form = new Form('UserLogin');
157 $Form->OnSubmit = '?Action=Login';
158 $Result = $this->System->Models['User']->Login($_POST['Username'], $_POST['Password']);
159 $Output .= $this->SystemMessage('Přihlášení', $Result);
160 if($Result <> USER_LOGGED_IN)
161 {
162 $Form->LoadValuesFromForm();
163 $Form->Values['Password'] = '';
164 $Output .= $Form->ShowEditForm();
165 $Output .= '<div class="Centred"><a href="?Action=UserRegister">Registrovat se</a> '.
166 '<a href="?Action=PasswordRecovery">Obnova zapomenutého hesla</a></div>';
167 }
168 } else
169 if($_GET['Action'] == 'Logout')
170 {
171 $Output .= $this->SystemMessage('Odhlášení', $this->System->Models['User']->Logout());
172 } else
173 if($_GET['Action'] == 'UserOptions')
174 {
175 $UserOptions = new Form('UserOptions');
176 $UserOptions->LoadValuesFromDatabase($this->System->Models['User']->User['Id']);
177 $UserOptions->OnSubmit = '?Action=UserOptionsSave';
178 $Output .= $UserOptions->ShowEditForm();
179 } else
180 if($_GET['Action'] == 'UserOptionsSave')
181 {
182 $UserOptions = new Form('UserOptions', array());
183 $UserOptions->LoadValuesFromForm();
184 $UserOptions->SaveValuesToDatabase($this->System->Models['User']->User['Id']);
185 $Output .= $this->SystemMessage('Nastavení', 'Nastavení uloženo.');
186 $this->System->Modules['Log']->NewRecord('User', 'Nastavení uživatele změněno', $UserOptions->Values['Name']);
187 $UserOptions->LoadValuesFromDatabase($this->System->Models['User']->User['Id']);
188 $UserOptions->OnSubmit = '?Action=UserOptionsSave';
189 $Output .= $UserOptions->ShowEditForm();
190 }
191 if($_GET['Action'] == 'UserRegister')
192 {
193 $Form = new Form('UserRegister');
194 $Form->LoadValuesFromForm();
195 $Form->OnSubmit = '?Action=UserRegisterSave';
196 $Output .= $Form->ShowEditForm();
197 } else
198 if($_GET['Action'] == 'UserRegisterConfirm')
199 {
200 $Output .= $this->SystemMessage('Potvrzení registrace', $this->System->Models['User']->RegisterConfirm($_GET['User'], $_GET['H']));
201 } else
202 if($_GET['Action'] == 'PasswordRecovery')
203 {
204 $Form = new Form('PasswordRecovery');
205 $Form->OnSubmit = '?Action=PasswordRecovery2';
206 $Output .= $Form->ShowEditForm();
207 } else
208 if($_GET['Action'] == 'PasswordRecovery2')
209 {
210 $Form = new Form('PasswordRecovery');
211 $Form->LoadValuesFromForm();
212 $Result = $this->System->Models['User']->PasswordRecoveryRequest($Form->Values['Name'], $Form->Values['Email']);
213 $Output .= $this->SystemMessage('Obnova hesla', $Result);
214 if($Result <> USER_PASSWORD_RECOVERY_SUCCESS)
215 {
216 $Output .= $Form->ShowEditForm();
217 }
218 } else
219 if($_GET['Action'] == 'PasswordRecoveryConfirm')
220 {
221 $Output .= $this->SystemMessage('Obnova hesla', $this->System->Models['User']->PasswordRecoveryConfirm($_GET['User'], $_GET['H'], $_GET['P']));
222 } else
223 if($_GET['Action'] == 'UserRegisterSave')
224 {
225 $Form = new Form('UserRegister', array());
226 $Form->LoadValuesFromForm();
227 $Result = $this->System->Models['User']->Register($Form->Values['Login'], $Form->Values['Password'], $Form->Values['Password2'], $Form->Values['Email'], $Form->Values['Name'], $Form->Values['PhoneNumber'], $Form->Values['ICQ']);
228 $Output .= $this->SystemMessage('Registrace nového účtu', $Result);
229 if($Result <> USER_REGISTRATED)
230 {
231 $Form->OnSubmit = '?Action=UserRegisterSave';
232 $Output .= $Form->ShowEditForm();
233 }
234 } else
235 if($_GET['Action'] == 'MemberOptions')
236 {
237 $UserOptions = new Form('MemberOptions');
238 $DbResult = $this->Database->query('SELECT Member.Id, Member.InternetTariffNextMonth, Member.FamilyMemberCount, Member.BillingPeriodNext, Subject.Name, Subject.AddressStreet, Subject.AddressTown, Subject.AddressPSC, Subject.IC, Subject.DIC FROM Member JOIN Subject ON Subject.Id = Member.Subject WHERE Member.Id='.$this->System->Models['User']->User['Member']);
239 $DbRow = $DbResult->fetch_array();
240 foreach($UserOptions->Definition['Items'] as $Index => $Item)
241 {
242 $UserOptions->Values[$Index] = $DbRow[$Index];
243 }
244 $UserOptions->OnSubmit = '?Action=MemberOptionsSave';
245 $Output .= $UserOptions->ShowEditForm();
246 } else
247 if($_GET['Action'] == 'MemberOptionsSave')
248 {
249 $UserOptions = new Form('MemberOptions');
250 $UserOptions->LoadValuesFromForm();
251 if($UserOptions->Values['FamilyMemberCount'] < 0)
252 $UserOptions->Values['FamilyMemberCount'] = 0;
253 if($UserOptions->Values['BillingPeriodNext'] < 2)
254 $UserOptions->Values['BillingPeriodNext'] = 2;
255
256 $DbResult = $this->Database->update('Member', 'Id='.$this->System->Models['User']->User['Member'], array('InternetTariffNextMonth' => $UserOptions->Values['InternetTariffNextMonth'], 'FamilyMemberCount' => $UserOptions->Values['FamilyMemberCount'], 'BillingPeriodNext' => $UserOptions->Values['BillingPeriodNext']));
257 $DbResult = $this->Database->query('SELECT Subject FROM Member WHERE Id='.$this->System->Models['User']->User['Member']);
258 $Member = $DbResult->fetch_assoc();
259 $DbResult = $this->Database->update('Subject', 'Id='.$Member['Subject'], array('Name' => $UserOptions->Values['Name'], 'AddressStreet' => $UserOptions->Values['AddressStreet'], 'AddressTown' => $UserOptions->Values['AddressTown'], 'AddressPSC' => $UserOptions->Values['AddressPSC'], 'IC' => $UserOptions->Values['IC'], 'DIC' => $UserOptions->Values['DIC']));
260 $Output .= $this->SystemMessage('Nastavení', 'Nastavení domácnosti uloženo.');
261 $this->System->Modules['Log']->NewRecord('Member+Subject', 'Nastavení člena/subjektu změněno', $UserOptions->Values['Name']);
262 $DbResult = $this->Database->query('SELECT Member.Id, Member.InternetTariffNextMonth, Member.FamilyMemberCount, Member.BillingPeriodNext, Subject.Name, Subject.AddressStreet, Subject.AddressTown, Subject.AddressPSC, Subject.IC, Subject.DIC FROM Member JOIN Subject ON Subject.Id = Member.Subject WHERE Member.Id='.$this->System->Models['User']->User['Member']);
263 $DbRow = $DbResult->fetch_array();
264 foreach($UserOptions->Definition['Items'] as $Index => $Item)
265 {
266 $UserOptions->Values[$Index] = $DbRow[$Index];
267 }
268 $UserOptions->OnSubmit = '?Action=MemberOptionsSave';
269 $Output .= $UserOptions->ShowEditForm();
270 }
271 }
272
273 $Database->select_db($Config['Database']['Database']);
274
275 // Show pannels
276 //if(IsInternetAddr()) echo('Internet'); else echo('LAN');
277 //$Output .= $this->InfoBar();
278 $Output .= '<table id="MainTable"><tr>';
279 $DbResult = $Database->select('PanelColumn', '*');
280 while($PanelColumn = $DbResult->fetch_assoc())
281 {
282 if($PanelColumn != '') $Width = ' width="'.$PanelColumn['Width'].'"';
283 else $Width = '';
284 $Output .= '<td valign="top"'.$Width.'>';
285 $DbResult2 = $Database->query('SELECT * FROM `Panel` WHERE `PanelColumn`='.$PanelColumn['Id'].' ORDER BY `Order`');
286 while($Panel = $DbResult2->fetch_assoc())
287 {
288 if($Panel['Module'] == 'HyperlinkGroup') $Output .= $this->ShowLinks($Panel['Parameters']);
289 else if($Panel['Module'] == 'OnlineHostList') $Output .= $this->Panel('Online počítače', $this->OnlineHostList());
290 else if($Panel['Module'] == 'UserOptions')
291 {
292 if($this->System->Models['User']->User['Id'] != $this->System->Models['User']->AnonymousUserId)
293 $Output .= $this->Panel('Přihlášený uživatel', $this->UserPanel());
294 } else
295 if(($Panel['Module'] == 'Webcam') and (array_key_exists('WebCam', $this->System->Modules)))
296 $Output .= $this->Panel('Kamery', $this->WebcamPanel());
297 else if($Panel['Module'] == 'NewsGroupList') $Output .= $this->Panel('Aktuality', $this->System->Modules['News']->Show(), array('<a href="?Action=CustomizeNews">Upravit</a>'));
298 }
299 $Output .= '</td>';
300 }
301 $Output .= '</table>';
302 return($Output);
303 }
304}
305
306function ProcessURL()
307{
308 $QueryString = $_SERVER['QUERY_STRING'];
309 if(substr($QueryString, -1, 1) == '/') $QueryString = substr($QueryString, 0, -1);
310 //echo('"'.$QueryString.'"');
311 $PathItems = explode('/', $QueryString);
312 if(strpos($_SERVER['REQUEST_URI'], '?') !== false)
313 $_SERVER['QUERY_STRING'] = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?') + 1);
314 else $_SERVER['QUERY_STRING'] = '';
315 parse_str($_SERVER['QUERY_STRING'], $_GET);
316 return($PathItems);
317}
318
319$System->PathItems = ProcessURL();
320//print_r($_GET);
321//print_r($System->PathItems);
322
323if($System->PathItems[0] != '')
324{
325 $Page = $System->PathItems[0];
326 //if(substr($Page, -1) == '/') $Page = substr($Page, 0, -1);
327 //print_r($System->Pages);
328 if(array_key_exists($Page, $System->Pages))
329 {
330 $PageClass = $System->Pages[$Page];
331 $PageObject = new $PageClass();
332 $PageObject->Database = &$Database;
333 $PageObject->System = &$System;
334 $PageObject->GetOutput();
335 } else echo(PAGE_NOT_FOUND);
336} else
337{
338 $System->AddModule(new IndexPage());
339 $System->Modules['IndexPage']->GetOutput();
340}
341
342?>
Note: See TracBrowser for help on using the repository browser.