Changeset 351 for trunk/index.php


Ignore:
Timestamp:
Jan 18, 2012, 8:05:35 AM (13 years ago)
Author:
chronos
Message:
  • Upraveno: Úvodní stránka převedena na systémový modul FrontPage.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/index.php

    r349 r351  
    33include_once('global.php');
    44
    5 class 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 
    3065function ProcessURL()
    3076{
    308   $QueryString = $_SERVER['QUERY_STRING'];
    309   if(substr($QueryString, -1, 1) == '/') $QueryString = substr($QueryString, 0, -1);
     7  if(array_key_exists('REDIRECT_QUERY_STRING', $_SERVER))
     8    $PathString = $_SERVER['REDIRECT_QUERY_STRING'];
     9    else $PathString = '';
     10  if(substr($PathString, -1, 1) == '/') $PathString = substr($PathString, 0, -1);
    31011  //echo('"'.$QueryString.'"');
    311   $PathItems = explode('/', $QueryString);
     12  $PathItems = explode('/', $PathString);
    31213  if(strpos($_SERVER['REQUEST_URI'], '?') !== false)
    31314    $_SERVER['QUERY_STRING'] = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?') + 1);
     
    32122//print_r($System->PathItems);
    32223
    323 if($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 }
     24$Page = $System->PathItems[0];
     25//if(substr($Page, -1) == '/') $Page = substr($Page, 0, -1);
     26//print_r($System->Pages);
     27if(array_key_exists($Page, $System->Pages))
     28{
     29  $PageClass = $System->Pages[$Page];
     30  $PageObject = new $PageClass();
     31  $PageObject->Database = &$Database;
     32  $PageObject->System = &$System;
     33  $PageObject->GetOutput();
     34} else echo(PAGE_NOT_FOUND);
    34135
     36//phpinfo();
    34237?>
Note: See TracChangeset for help on using the changeset viewer.