Changeset 148


Ignore:
Timestamp:
Feb 15, 2009, 7:59:35 PM (15 years ago)
Author:
george
Message:
  • Upraveno: Přepracován systém generování zobrazení výstupu. Pro nový systím přepsáno mnoho stránek.
Location:
www
Files:
13 added
1 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • www/config.sample.php

    r67 r148  
    22
    33$Config = array(
    4   'Database' => array(
     4  'Database' => array
     5  (
    56    'Host' => 'centrala',
    67    'User' => 'root',
     
    1011    'Charset' => 'utf8',
    1112  ),
    12   'Web' => array(
     13  'Web' => array
     14  (
    1315    'Charset' => 'utf-8',
    1416    'Host' => 'localhost',
     
    2224    'WebcamPassword' => '',
    2325    'WebcamRefresh' => 5,
    24     'News' => array(
     26    'News' => array
     27        (
    2528      'DaysAgo' => 30,
    2629      'Count' => 5,
    2730    ),     
    2831  ),
     32  'Finance' => array
     33  (
     34    'MainUserId' => 1,
     35  ),
     36  'Network' => array
     37  (
     38    'MaxSubnetCount' => 7,
     39  ),
    2940);
    3041
  • www/database.php

    r129 r148  
    99  var $LastQuery = '';
    1010 
     11  function query($Query)
     12  {
     13    $this->LastQuery = $Query;
     14    return(parent::query($Query)); 
     15  }
     16
    1117  function select($Table, $What = '*', $Condition = 1)
    1218  {
     
    3036      $Name .= ',`'.$Key.'`';
    3137            if($Value == 'NOW()') $Values .= ",".$Value;
     38else if($Value == 'UUID()') $Values .= ",".$Value;
    3239              else $Values .= ",'".$Value."'";
    3340    }
  • www/global.php

    r145 r148  
    99include('database.php');
    1010//include('error.php');
     11include_once('code.php');
    1112$Database = new Database($Config['Database']['Host'], $Config['Database']['User'], $Config['Database']['Password'], $Config['Database']['Database']);
    1213$Database->Prefix = $Config['Database']['Prefix'];
    1314$Database->charset($Config['Database']['Charset']);
    14 include('module.php');
    15 //include('user.php');
    16 //$User = new User($Database);
    17 //$User->Check();
     15include_once('module.php');
     16include_once('forms.php');
     17include_once('page.php');
     18
     19class System extends Module
     20{
     21  var $Modules = array();
     22
     23  function ModulePresent($Name)
     24  {
     25    return(array_key_exists($Name, $this->Modules));
     26  }
     27
     28  function AddModule($Module)
     29  {
     30    global $Database;
     31
     32    //echo('Přidávám modul '.get_class($Module).'<br>');
     33    $Module->System = &$this;
     34    $Module->Database = &$Database;
     35    $this->Modules[get_class($Module)] = $Module;
     36  }
     37}
     38
     39$System = new System();
     40$System->Config = $Config;
     41/*
     42include_once('log.php');
     43$System->AddModule(new Log());
     44include_once('user.php');
     45$System->AddModule(new User());
     46$System->Modules['User']->Check();
     47include_once('aktuality/news.php');
     48$System->AddModule(new News());
     49include_once('webcam/webcam.php');
     50$System->AddModule(new Webcam());
     51include_once('finance/bills.php');
     52$System->AddModule(new Bill());
     53include_once('finance/finance.php');
     54$System->AddModule(new Finance());
     55*/
    1856
    1957$MonthNames = array('', 'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec');
    2058
    21 $MaxSubnet = 7;
     59$MaxSubnet = $Config['Network']['MaxSubnetCount'];
     60
     61$UnitNames = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB');
    2262 
     63function HumanSize($Value)
     64{
     65  global $UnitNames;
     66
     67  $UnitIndex = 0;
     68  while($Value > 1024)
     69  {
     70    $Value = round($Value / 1024, 3);
     71    $UnitIndex++;
     72  }
     73  return($Value.' '.$UnitNames[$UnitIndex]);
     74}
     75
    2376function GetMicrotime()
    2477{
     
    120173{
    121174  if(array_key_exists('HTTP_X_FORWARDED_FOR',$_SERVER)) $IP = $_SERVER['HTTP_X_FORWARDED_FOR'] ;
    122   else $IP = $_SERVER['REMOTE_ADDR'];
    123   //if($IP == '127.0.0.1')
     175  else if(array_key_exists('REMOTE_ADDR', $_SERVER)) $IP = $_SERVER['REMOTE_ADDR'];
     176  else $IP = '0.0.0.0';
    124177  return($IP);
    125178}
     
    130183  $RemoteAddr = explode('.', $RemoteAddr);
    131184  return(!(($RemoteAddr[0] == 192) and ($RemoteAddr[1] == 168)));
    132 }
    133 
    134 // Funkce formatovani vystupu
    135 function FormatOutput($s)
    136 {
    137     $out = '';
    138     $nn = 0;
    139     $n = 0;
    140     while($s!='')
    141     {
    142       $start = strpos($s,'<');
    143           $end = strpos($s,'>');
    144         if($start != 0)
    145         {
    146               $end = $start-1;
    147               $start = 0;
    148             }
    149             $line = trim(substr($s,$start,$end+1));
    150             if(strlen($line)>0)
    151             if($line[0] == '<')
    152             {
    153             if($s[$start+1] == '/')
    154               {
    155               $n = $n - 2;
    156                       $nn = $n;
    157               } else
    158               {
    159             if(strpos($line,' ')) $cmd = substr($line,1,strpos($line,' ')-1);
    160                 else $cmd = substr($line,1,strlen($line)-2);
    161           //echo('['.$cmd.']');
    162                       if(strpos($s,'</'.$cmd.'>')) $n = $n + 2;
    163               }   
    164             }// else $line = '['.$line.']';
    165       //if($line != '') echo(htmlspecialchars(str_repeat(' ',$nn).$line."\n"));
    166             if($line != '') $out .= (str_repeat(' ',$nn).$line."\n");
    167             $s = substr($s,$end+1,strlen($s));
    168             $nn = $n;
    169     }
    170     return($out);
    171185}
    172186
  • www/history.php

    r4 r148  
    11<?php
    2 include('style.php');
    3 ShowHeader('Historie sítě', 'Historie');
    4 echo('<table>
     2include_once('global.php');
     3
     4class NetworkHistoryPage extends Page
     5{
     6  var $FullTitle = 'Historie vývoje sítě';
     7  var $ShortTitle = 'Historie';
     8
     9  function Show()
     10  {
     11    $Output = '<table>
    512<tr><td style="text-align: right; vertical-align: top;">1.1.2008&nbsp;- </td><td>Navýšení rychlosti linky na 10 Mbit/s za stejnou cenu. Rychlosti všech tarifů byly zvednuty na čtyřnásobek. Přidán tarif Pomalejší.</td></tr>
    613<tr><td style="text-align: right; vertical-align: top;">1.2.2007&nbsp;- </td><td>Navýšení rychlosti linky na 2 Mbit/s. Cena se zvýšila mírně, agregace se snížila na polovinu. Nabídka rozšířena o další rychlejší tarif.</td></tr>
     
    1926<tr><td style="text-align: right; vertical-align: top;">19.07.2002&nbsp;-  </td><td>V tento den byl zakoupen síťový přepínač, UTP kabel a síťové karty, a byly propojeny tři domy a celkem čtyři počítače v kolonce u Hajdů. Přestože se ještě nejednalo o Zděchovskou počítačovou síť, lze tuto událost považovat za jeden z prvních kroků, který vedl k pozdějšímu vzniku sítě.</td></tr>
    2027<tr><td style="text-align: right; vertical-align: top;">2000-2001&nbsp;-  </td><td>Někdy v této době byl uskutečněn první amatérský kabelový spoj mezi dvěma počítači ve dvou sousedních domech v naší obci. K propojení byl použit tenký koaxiální kabel s BNC konektory na vzdálenost zhruba 30 metrů. Ještě dříve však byl na stejném místě natažen jiný kabel a to dvouvodičový, který sloužil ke spojení dvou dětských telefonů. Tento kabel byl dokonce použit jako nosné lanko pro pohyb miniaturní lanovky pro převážení menších předmětů. Tyto úsměvné události lze považovat za zárodek sítě, která začala vznikat o pár let později.</td></tr>
    21 </table>'); 
     28</table>';
     29    return($Output);
     30  }
     31}
    2232
    23 ShowFooter();
     33$System->AddModule(new NetworkHistoryPage());
     34$System->Modules['NetworkHistoryPage']->GetOutput();
     35
    2436?>
  • www/hostlist.php

    r78 r148  
    11<?php
    2 include('style.php');
    3 ShowHeader('Seznam známých počítačů v síti', 'Seznam počítačů');
    4 
    52include_once('global.php');
    63
    7 echo('<table border="1" cellspacing="0" cellpadding="2" style="font-size: small;">
    8 <tr><th>Jméno počítače</th><th>IP adresa</th><th>Naposledy</th><th>Správce</th></tr>');
     4class HostListPage extends Page
     5{
     6  var $FullTitle = 'Seznam registrovaných počítačů';
     7  var $ShortTitle = 'Seznam počítačů';
    98
    10 $DbResult = $Database->select('hosts', '*', 'type=0 ORDER BY name');
    11 while($Host = $DbResult->fetch_array())
    12 {
    13   $DbResult2 = $Database->select('users','*, CONCAT(second_name," ",first_name) as fullname','id='.$Host['user']);
    14   $User = $DbResult2->fetch_array();
    15  //'<img src="http://wwp.icq.com/scripts/online.dll?icq='.$Row['icq'].'&img=5">'.
    16   if($Host['online'] == 1) $Style = 'font-weight: bold; color: blue;'; else $Style = '';
    17   if($Host['IP'] == '') $Host['IP'] = '&nbsp;';
    18   echo('<tr><td style="text-align: left; '.$Style.'">'.$Host['name'].'</td><td>'.$Host['IP'].'</td><td style="text-align: right;">'.HumanDate($Host['last_online']).'</td><td style="text-align: right;">'.$User['fullname'].'</td></tr>');
     9  function Show()
     10  {
     11    $Output = '<div align="center" style="font-size: small;"><table class="WideTable"><tr><th>Jméno počítače</th><th>IP adresa</th><th>Naposledy</th><th>Správce</th></tr>';
     12    $DbResult = $this->Database->select('hosts', '*', 'type=0 ORDER BY name');
     13    while($Host = $DbResult->fetch_array())
     14    {
     15      $DbResult2 = $this->Database->select('users','*, CONCAT(second_name," ",first_name) as fullname','id='.$Host['user']);
     16      $User = $DbResult2->fetch_array();
     17      if($Host['online'] == 1) $Style = 'font-weight: bold; color: blue;'; else $Style = '';
     18      if($Host['IP'] == '') $Host['IP'] = '&nbsp;';
     19      $Output .= '<tr><td style="text-align: left; '.$Style.'">'.$Host['name'].'</td><td>'.$Host['IP'].'</td><td style="text-align: right;">'.HumanDate($Host['last_online']).'</td><td style="text-align: right;">'.$User['fullname'].'</td></tr>';
     20    }
     21    $Output .= '</table></div>';
     22    return($Output);
     23  }
    1924}
    20 echo('</table>');
    2125
    22 ShowFooter();
     26$System->AddModule(new HostListPage());
     27$System->Modules['HostListPage']->GetOutput();
     28
    2329?>
  • www/index.php

    r143 r148  
    116116<img alt="" src="images/favicons/tech.gif" width="16" height="16" /> <a href="network.php">Technické informace</a><br />
    117117<img alt="" src="images/favicons/socer.gif" width="16" height="16" /> <a href="http://fotbal.zdechov.net/">Fotbal Sokol Zděchov</a><br />
    118 <img alt="" src="images/favicons/clear.gif" width="16" height="16" /> <a href="/webcam/">Web kamera</a><br />
     118<img alt="" src="images/favicons/clear.gif" width="16" height="16" /> <a href="webcam/">Web kamera</a><br />
    119119<img alt="" src="images/favicons/clear.gif" width="16" height="16" /> <a href="http://www.zdechov.net">Stránky naší sítě</a><br />
    120120<br />
  • www/merak.php

    r4 r148  
    11<?php
    2 include_once('style.php');
    3 ShowHeader('Domácí měřicí přístroj spotřeby', 'Měřič spotřeby');
    4 echo('Tento měřící přístroj byl zakoupen pro potřeby měření spotřeby elektrické energie jednotlivými zařízeními sítě. Změřená spotřeba je zaznamenána do databáze, a podle ní je vypočítáván poplatek za spotřebu. Přístroj však není využíván stále a jelikož je ve vlastnictví celé sítě, je možno si jej zapůjčit. Možnost půjčení závisí na tom, zda je momentálně volný nebo jej má někdo půjčený.<br> S tímto přístrojem lze měřit spotřebu zařízení ve Wattech a to okamžitou, maximální a celkovou, a dále ji nechat přepočítat na náklady. Další informace naleznete v manuálu níže. Spotřebu všech zařízení však \nezměří přesně, některá totiž nejsou pouze odporovou zátěží, ale i kapacitní a indukční. U těchto zařízení lze spotřebu změřit přesněji jiným způsobem, měřením činného a jalového výkonu a určením účinníku.
    5 <br>Pokud si chcete přístroj půjčit, kontaktujte správce sítě přes chat nebo na telefonním čísle 737785792.<br><br>
    6 <strong>Aktuální stav:</strong> volný<br>
    7 <br>Náhledy:<br>
     2include_once('global.php');
     3
     4class RentalPage extends Page
     5{
     6  var $FullTitle = 'Domácí měřicí přístroj spotřeby';
     7  var $ShortTitle = 'Měřič spotřeby';
     8
     9  function Show()
     10  {
     11    $Output = 'Tento měřící přístroj byl zakoupen pro potřeby měření spotřeby elektrické energie jednotlivými zařízeními sítě. Změřená spotřeba je zaznamenána do databáze, a podle ní je vypočítáván poplatek za spotřebu. Přístroj však není využíván stále a jelikož je ve vlastnictví celé sítě, je možno si jej zapůjčit. Možnost půjčení závisí na tom, zda je momentálně volný nebo jej má někdo půjčený.<br /> S tímto přístrojem lze měřit spotřebu zařízení ve Wattech a to okamžitou, maximální a celkovou, a dále ji nechat přepočítat na náklady. Další informace naleznete v manuálu níže. Spotřebu všech zařízení však \nezměří přesně, některá totiž nejsou pouze odporovou zátěží, ale i kapacitní a indukční. U těchto zařízení lze spotřebu změřit přesněji jiným způsobem, měřením činného a jalového výkonu a určením účinníku.
     12<br />Pokud si chcete přístroj půjčit, kontaktujte správce sítě přes chat nebo na telefonním čísle 737785792.<br /><br />
     13<strong>Aktuální stav:</strong> volný<br />
     14<br />Náhledy:<br />
    815<a href="images/measure/Image1.jpg"><img height="200" src="images/measure/Image1.jpg" alt="Image1"></a> '.
    916'<a href="images/measure/Image2.jpg"><img height="200" src="images/measure/Image2.jpg" alt="Image2"></a> '.
    1017'<a href="images/measure/Image3.jpg"><img height="200" src="images/measure/Image3.jpg" alt="Image3"></a> '.
    1118'<a href="images/measure/Image4.jpg"><img height="200" src="images/measure/Image4.jpg" alt="Image4"></a> '.
    12 '<a href="images/measure/Image5.jpg"><img height="200" src="images/measure/Image5.jpg" alt="Image5"></a> <br>'.
    13 '<br>Přiložené pokyny k použití přístroje:<br>'.
     19'<a href="images/measure/Image5.jpg"><img height="200" src="images/measure/Image5.jpg" alt="Image5"></a> <br />'.
     20'<br />Přiložené pokyny k použití přístroje:<br />'.
    1421'<a href="images/measure/Image6.jpg"><img height="400" src="images/measure/Image6.jpg" alt="Image6"></a> '.
    15 '<a href="images/measure/Image7.jpg"><img height="400" src="images/measure/Image7.jpg" alt="Image7"></a><br> ');
     22'<a href="images/measure/Image7.jpg"><img height="400" src="images/measure/Image7.jpg" alt="Image7"></a><br />';
     23    return($Output);
     24  }
     25}
    1626
    17 ShowFooter();
     27$System->AddModule(new RentalPage());
     28$System->Modules['RentalPage']->GetOutput();
    1829
    1930?>
  • www/missing.php

    r4 r148  
    11<?php
    2 include('style.php');
    3 ShowHeader('Stránka nenalezena', 'Stránka nenalezena');
     2include_once('global.php');
    43
    5 echo('<h3> Požadovanou stránku nelze zobrazit, protože na serveru neexistuje! </h3>');
     4class MissingPage extends Page
     5{
     6  var $FullTitle = 'Stránka nenalezena';
     7  var $ShortTitle = 'Stránka nenalezena';
    68
    7 ShowFooter();
     9  function Show()
     10  {
     11    return('<h3 align="center"> Požadovanou stránku nelze zobrazit, protože na serveru neexistuje. </h3>');
     12  }
     13}
     14
     15$System->AddModule(new MissingPage());
     16$System->Modules['MissingPage']->GetOutput();
     17
    818?>
  • www/module.php

    r77 r148  
    11<?php
    22
    3 class Module 
     3class Module
    44{
    55  var $Database;
     
    88  var $Dependencies = array();
    99  var $CurrentPath = '/';
    10    
    11   function __construct($Database)
     10
     11  function __construct()
    1212  {
    13     $this->Database = $Database;
    1413  }
    1514
  • www/network.php

    r76 r148  
    11<?php
    2 include('style.php');
    3 ShowHeader('Technické informace o síti', 'Technické informace');
     2include_once('global.php');
    43
     4class NetworkInformationPage extends Page
     5{
     6  var $FullTitle = 'Technické informace o síti';
     7  var $ShortTitle = 'Technické informace';
    58
    6 if(!array_key_exists('section', $_GET)) $_GET['section'] = '';
    7 switch($_GET['section'])
    8 {
    9   case 'servers':
    10     $Servers = array(
    11       array(
    12         'name' => 'centrala',
    13         'description' => 'Hlavní router a víceúčelový server sítě',
    14         'components' => array(
    15           array('Procesor', 'AMD Sempron 64 2500+ (1,4 GHz 800 MHz 256k) soc 754, BOX', 1890),
    16           array('Paměť', '512 MB DDR 400 MHz', '500(síť) + 500(George)', 0),
    17           array('Základní deska', 'GIGABYTE s. 754 K8VT800, VIA K8T800, AGP 8x, 3x DDR400, LAN, audio', 1890),
    18           array('Skříň', 'Midi RedStar 2202 ATX 300W', 690),
    19           array('Grafická karta', 'ATI Rage 128 Pro 32 MB', 300),
    20           array('Pevný disk - systémový', 'WD300BB 30 GB', 500),
    21           array('Pevný disk - datový', 'Maxtor DiamondMax SATA 160 GB', 1664),
    22           array('Pevný disk - zálohovací', 'Maxtor 91301U3 13 GB', 'věnoval Marek Hrňa'),
    23         ),
    24       ),
    25       array(
    26         'name' => 'game',
    27         'description' => 'Hostovaný počítač hráčů serveru <a href="http://wow.zdechov.net/">WoW Heroes of Fantasy</a>',
    28         'components' => array(
    29           array('Procesor', '', 0),
    30           array('Paměť', '', 0),
    31           array('Základní deska', '', 0),
    32           array('Skříň', '', 0),
    33           array('Grafická karta', '', 0),
    34           array('Pevný disk', '', 0),
    35         ),
    36       ),
    37       array(
    38         'name' => 'tv',
    39         'description' => 'Televizní server',
    40         'components' => array(
    41           array('Procesor', 'AMD Athlon 64 3800+, 2.4 GHz', 3140),
    42           array('Paměť', '512 MB DDR 400 MHz', 1100),
    43           array('Paměť', '512 MB DDR 400 MHz', 1000),
    44           array('Paměť', '512 MB DDR 400 MHz', 700),
    45           array('Paměť', '512 MB DDR 400 MHz', 700),
    46           array('Základní deska', 'ASUS A8V-VM', 1382),
    47           array('Skříň', 'Midi tower Redstar HERO 10 ATX', 690),
    48           array('Grafická karta', 'PCI S3 Trio64+', 50),
    49           array('Pevný disk', '?', '?'),
    50         ),
    51       ),
    52       array(
    53         'name' => 'testserver',
    54         'description' => 'Stará záložní centrála',
    55         'components' => array(
    56           array('Procesor', 'Intel Pentium 2 350 MHz', 0),
    57           array('Paměť', '64 MB DIMM 100 MHz', 0),
    58           array('Základní deska', 'MSI M11E', 0),
    59           array('Skříň', 'Mini tower AT 200W', 0),
    60           array('Grafická karta', 'S3 Trio3D/2X 8 MB', 0),
    61           array('Pevný disk', 'ST3840A 8 GB', 0),
    62         ),
    63       ),
    64     );
    65     echo('<strong>Seznam serverů v síti:</strong><br><br>');
    66     foreach($Servers as $Server)
     9  function Show()
     10  {
     11    $Output = '';
     12    if(!array_key_exists('section', $_GET)) $_GET['section'] = '';
     13    switch($_GET['section'])
    6714    {
    68       echo('<strong>'.strtoupper($Server['name']).'</strong><br>'.
    69       $Server['description'].'<br>'.
    70       '<table style="font-size: small;" border="1" cellspacing="0" cellpadding="3">'.
    71       '<tr><th>Jméno komponenty</th><th>Značka</th><th>Cena [Kč]</th></tr>');
    72       foreach($Server['components'] as $Component)
    73       {
    74         echo('<tr><td>'.$Component[0].'</td><td>'.$Component[1].'</td><td>'.$Component[2].'</td></tr>');
    75       }
    76       echo('</table><br>');
    77     }
    78     break;
    79   case 'nastaveni_pripojeni':
    80     echo('<br><strong>Nastavení síťového přípojení:</strong><br>
     15      case 'servers':
     16        $Servers = array(
     17          array(
     18            'name' => 'centrala',
     19            'description' => 'Hlavní router a víceúčelový server sítě',
     20            'components' => array(
     21              array('Procesor', 'AMD Sempron 64 2500+ (1,4 GHz 800 MHz 256k) soc 754, BOX', 1890),
     22              array('Paměť', '512 MB DDR 400 MHz', '500(síť) + 500(George)', 0),
     23              array('Základní deska', 'GIGABYTE s. 754 K8VT800, VIA K8T800, AGP 8x, 3x DDR400, LAN, audio', 1890),
     24              array('Skříň', 'Midi RedStar 2202 ATX 300W', 690),
     25              array('Grafická karta', 'ATI Rage 128 Pro 32 MB', 300),
     26              array('Pevný disk - systémový', 'WD300BB 30 GB', 500),
     27              array('Pevný disk - datový', 'Maxtor DiamondMax SATA 160 GB', 1664),
     28              array('Pevný disk - zálohovací', 'Maxtor 91301U3 13 GB', 'věnoval Marek Hrňa'),
     29            ),
     30          ),
     31          array(
     32            'name' => 'game',
     33            'description' => 'Hostovaný počítač hráčů serveru <a href="http://wow.zdechov.net/">WoW Heroes of Fantasy</a>',
     34            'components' => array(
     35              array('Procesor', '', 0),
     36              array('Paměť', '', 0),
     37              array('Základní deska', '', 0),
     38              array('Skříň', '', 0),
     39              array('Grafická karta', '', 0),
     40              array('Pevný disk', '', 0),
     41            ),
     42          ),
     43          array(
     44            'name' => 'tv',
     45            'description' => 'Televizní server',
     46            'components' => array(
     47              array('Procesor', 'AMD Athlon 64 3800+, 2.4 GHz', 3140),
     48              array('Paměť', '512 MB DDR 400 MHz', 1100),
     49              array('Paměť', '512 MB DDR 400 MHz', 1000),
     50              array('Paměť', '512 MB DDR 400 MHz', 700),
     51              array('Paměť', '512 MB DDR 400 MHz', 700),
     52              array('Základní deska', 'ASUS A8V-VM', 1382),
     53              array('Skříň', 'Midi tower Redstar HERO 10 ATX', 690),
     54              array('Grafická karta', 'PCI S3 Trio64+', 50),
     55              array('Pevný disk', '?', '?'),
     56            ),
     57          ),
     58          array(
     59            'name' => 'testserver',
     60            'description' => 'Stará záložní centrála',
     61            'components' => array(
     62              array('Procesor', 'Intel Pentium 2 350 MHz', 0),
     63              array('Paměť', '64 MB DIMM 100 MHz', 0),
     64              array('Základní deska', 'MSI M11E', 0),
     65              array('Skříň', 'Mini tower AT 200W', 0),
     66              array('Grafická karta', 'S3 Trio3D/2X 8 MB', 0),
     67              array('Pevný disk', 'ST3840A 8 GB', 0),
     68            ),
     69          ),
     70        );
     71        $Output .= '<strong>Seznam serverů v síti:</strong><br /><br />';
     72        foreach($Servers as $Server)
     73        {
     74          $Output .= '<strong>'.strtoupper($Server['name']).'</strong><br />'.
     75         $Server['description'].'<br />'.
     76          '<table style="font-size: small;" border="1" cellspacing="0" cellpadding="3">'.
     77          '<tr><th>Jméno komponenty</th><th>Značka</th><th>Cena [Kč]</th></tr>';
     78          foreach($Server['components'] as $Component)
     79          {
     80            $Output .= '<tr><td>'.$Component[0].'</td><td>'.$Component[1].'</td><td>'.$Component[2].'</td></tr>';
     81          }
     82          $Output .= '</table><br />';
     83        }
     84        break;
     85      case 'nastaveni_pripojeni':
     86        $Output .= '<br /><strong>Nastavení síťového přípojení:</strong><br />
    8187<table style="font-size: small;" border="1" cellspacing="0" cellpadding="3">
    8288<tr><td>IP adresa</td><td>192.168.x.x</td></tr>
     
    8995<tr><td>Přípona DNS počítače</td><td>zdechov.net</td></tr>
    9096<tr><td>Skupina</td><td>ZDECHOV</td></tr>
    91 </table>');
    92     break;
    93   case 'obsazeni_wifi_kanalu':
    94     echo('<br><strong>Obsazení wifi kanálů:</strong><br>
     97</table>';
     98        break;
     99      case 'obsazeni_wifi_kanalu':
     100        $Output .= '<br /><strong>Obsazení wifi kanálů:</strong><br />
    95101<table style="font-size: small;"  border="1" cellspacing="0" cellpadding="3">
    96102<tr><th>Kanál</th><th>Frekvence [GHz]</th><th>Zařízení</th></tr>
    97 <tr><td>1</td><td>2,412</td><td>AP-RUDO, AP-HAJDIKOVI</td></tr>
    98 <tr><td>2</td><td>2,417</td><td>AP-JANICATA</td></tr>
    99 <tr><td>3</td><td>2,422</td><td>AP-MARKYTAN, ap-zvonicek</td></tr>
    100 <tr><td>4</td><td>2,427</td><td>&nbsp;</td></tr>
    101 <tr><td>5</td><td>2,432</td><td>AP-MARON</td></tr>
    102 <tr><td>6</td><td>2,437</td><td>AP-SKARPA2, ap-sekula</td></tr>
    103 <tr><td>7</td><td>2,442</td><td>&nbsp;</td></tr>
    104 <tr><td>8</td><td>2,447</td><td>ap-hajda</td></tr>
    105 <tr><td>9</td><td>2,452</td><td>AP-HAPPY</td></tr>
    106 <tr><td>10</td><td>2,457</td><td>AP-HAJDIKOVI2, AP-NAVRATIL</td></tr>
    107 <tr><td>11</td><td>2,462</td><td>AP-MARTIN</td></tr>
    108 <tr><td>12</td><td>2,467</td><td>AP-SEKULA</td></tr>
    109 <tr><td>13</td><td>2,472</td><td>AP-SKARPA</td></tr>
     103<tr><td>1</td><td>2,412</td><td>AP-RUDO, AP-HAJDIKOVI, ptp-skarpa</td></tr>
     104<tr><td>2</td><td>2,417</td><td>&nbsp;</td></tr>
     105<tr><td>3</td><td>2,422</td><td>ap-markytan, ap-zvonicek, ap-hrbacek</td></tr>
     106<tr><td>4</td><td>2,427</td><td>ap-george</td></tr>
     107<tr><td>5</td><td>2,432</td><td>AP-MARON, ap-janicata</td></tr>
     108<tr><td>6</td><td>2,437</td><td>ap-sekula</td></tr>
     109<tr><td>7</td><td>2,442</td><td>ap-chaty</td></tr>
     110<tr><td>8</td><td>2,447</td><td>ap-bytovky</td></tr>
     111<tr><td>9</td><td>2,452</td><td>ap-kopecek</td></tr>
     112<tr><td>10</td><td>2,457</td><td>ap-skarpa, AP-HAJDIKOVI2, AP-NAVRATIL</td></tr>
     113<tr><td>11</td><td>2,462</td><td>&nbsp;</td></tr>
     114<tr><td>12</td><td>2,467</td><td>&nbsp;</td></tr>
     115<tr><td>13</td><td>2,472</td><td>ap-hajda, zbranek</td></tr>
    110116<tr><td>100</td><td>5,500</td><td>ptp-markytan</td></tr>
    111 <tr><td>104</td><td>5,520</td><td>&nbsp;</td></tr>
     117<tr><td>104</td><td>5,520</td><td>ptp-smutny</td></tr>
    112118<tr><td>108</td><td>5,540</td><td>&nbsp;</td></tr>
    113119<tr><td>112</td><td>5,560</td><td>&nbsp;</td></tr>
    114 <tr><td>116</td><td>5,580</td><td>&nbsp;</td></tr>
    115 <tr><td>120</td><td>5,600</td><td>&nbsp;</td></tr>
     120<tr><td>116</td><td>5,580</td><td>ptp-janicata</td></tr>
     121<tr><td>120</td><td>5,600</td><td>ptp-hajdova</td></tr>
    116122<tr><td>124</td><td>5,620</td><td>&nbsp;</td></tr>
    117 <tr><td>128</td><td>5,640</td><td>&nbsp;</td></tr>
    118 <tr><td>132</td><td>5,660</td><td>&nbsp;</td></tr>
     123<tr><td>128</td><td>5,640</td><td>ptp-bytovky</td></tr>
     124<tr><td>132</td><td>5,660</td><td>ptp-chaty</td></tr>
    119125<tr><td>136<td>5,700</td></td><td>ptp-sekula</td></tr>
    120126<tr><td>140<td>5,720</td></td><td>&nbsp;</td></tr>
    121 </table>');
    122     break;
    123   case 'udp_forward':
    124     echo('<br><strong>Průchozí UDP porty her:</strong><br>
     127</table>';
     128        $Output .= 'Aktualizováno: 10.8.2008';
     129        break;
     130      case 'udp_forward':
     131        $Output .= '<br /><strong>Průchozí UDP porty her:</strong><br />
    125132<table style="font-size: small;" border="1" cellspacing="0" cellpadding="3">
    126 <tr><th>Hra</th><th>Číslo portu</th></tr>');
    127     $DbResult = $Database->select('network_udp_forwarder', '*');
    128     while($Row = $DbResult->fetch_array())
    129     {
    130       echo('<tr><td>'.$Row['game'].'</td><td align="right">'.$Row['port'].'</td></tr>');
     133<tr><th>Hra</th><th>Číslo portu</th></tr>';
     134        $DbResult = $this->Database->select('network_udp_forwarder', '*');
     135        while($Row = $DbResult->fetch_array())
     136        {
     137          $Output .= '<tr><td>'.$Row['game'].'</td><td align="right">'.$Row['port'].'</td></tr>';
     138        }
     139        $Output .= '</table>';
     140        break;
     141      default:
     142        $Output .= '<a href="?section=servers">Seznam serverů</a><br />';
     143        $Output .= '<a href="?section=udp_forward">Průchozí UDP porty přes centrálu</a><br />';
     144        $Output .= '<a href="?section=nastaveni_pripojeni">Nastavení připojení počítačů</a><br />';
     145        $Output .= '<a href="?section=obsazeni_wifi_kanalu">Obsazení Wi-Fi kanálů</a><br />';
    131146    }
    132     echo('</table>');
    133     break;
    134   default:
    135     echo('<a href="?section=servers">Seznam serverů</a><br>');
    136     echo('<a href="?section=udp_forward">Průchozí UDP porty přes centrálu</a><br>');
    137     echo('<a href="?section=nastaveni_pripojeni">Nastavení připojení počítačů</a><br>');
    138     echo('<a href="?section=obsazeni_wifi_kanalu">Obsazení Wi-Fi kanálů</a><br>');
     147    return($Output);
     148  }
    139149}
    140150
    141 ShowFooter();
     151$System->AddModule(new NetworkInformationPage());
     152$System->Modules['NetworkInformationPage']->GetOutput();
    142153
    143154?>
  • www/otevreno.php

    r146 r148  
    11<?php
    2 include('style.php');
     2include_once('global.php');
    33
    4 ShowHeader('Otvírací doby místních subjektů', 'Otvírací doby');
    5 $DaysOfWeek = array('Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota', 'Neděle');
     4class SubjectOpenTimePage extends Page
     5{
     6  var $FullTitle = 'Otvírací doby místních subjektů';
     7  var $ShortTitle = 'Otvírací doby';
     8  var $DaysOfWeek = array('Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota', 'Neděle');
    69
    710  function Show()
    811  {
    9         global $Database, $DaysOfWeek;
    10        
    1112    $Output = '<div align="center">';
    12     $DbResult = $Database->query('SELECT SubjectOpenTime.*, DATE_FORMAT(SubjectOpenTime.UpdateTime, "%e.%c.%Y") as UpdateTime, Subject.Name as Name FROM SubjectOpenTime JOIN Subject ON Subject.Id = SubjectOpenTime.Subject');
     13    $DbResult = $this->Database->query('SELECT SubjectOpenTime.*, DATE_FORMAT(SubjectOpenTime.UpdateTime, "%e.%c.%Y") as UpdateTime, Subject.Name as Name FROM SubjectOpenTime JOIN Subject ON Subject.Id = SubjectOpenTime.Subject');
    1314    while($Subject = $DbResult->fetch_array())
    1415    {
    1516      $Output .= '<strong>'.$Subject['Name'].':</strong><br />';
    16       $DbResult2 = $Database->query('SELECT Subject, OpenTime, CloseTime, TIMEDIFF(CloseTime, DATE_FORMAT(NOW(), "0000-01-%w %T")) as RemainTime FROM `SubjectOpenTimeInterval` WHERE DATE_FORMAT(NOW(), "0000-01-%w %T") > OpenTime AND DATE_FORMAT(NOW(), "0000-01-%w %T") < CloseTime AND Subject='.$Subject['Subject']);
     17      $DbResult2 = $this->Database->query('SELECT Subject, OpenTime, CloseTime, TIMEDIFF(CloseTime, DATE_FORMAT(NOW(), "0000-01-%w %T")) as RemainTime FROM `SubjectOpenTimeInterval` WHERE DATE_FORMAT(NOW(), "0000-01-%w %T") > OpenTime AND DATE_FORMAT(NOW(), "0000-01-%w %T") < CloseTime AND Subject='.$Subject['Subject']);
    1718      if($DbResult2->num_rows > 0)
    1819      {
     
    2122      } else
    2223      {
    23         $DbResult2 = $Database->query('SELECT Subject, OpenTime, CloseTime, TIMEDIFF(OpenTime, DATE_FORMAT(NOW(), "0000-01-%w %T")) as RemainTime FROM `SubjectOpenTimeInterval` WHERE DATE_FORMAT(NOW(), "0000-01-%w %T") < OpenTime AND Subject='.$Subject['Subject'].' ORDER BY OpenTime LIMIT 1');
     24        $DbResult2 = $this->Database->query('SELECT Subject, OpenTime, CloseTime, TIMEDIFF(OpenTime, DATE_FORMAT(NOW(), "0000-01-%w %T")) as RemainTime FROM `SubjectOpenTimeInterval` WHERE DATE_FORMAT(NOW(), "0000-01-%w %T") < OpenTime AND Subject='.$Subject['Subject'].' ORDER BY OpenTime LIMIT 1');
    2425        $DbRow = $DbResult2->fetch_array();
    2526        $Output .= 'Otevírá za '.$DbRow['RemainTime'];
     
    2728      $Output .= '<table class="WideTable">
    2829<tr><th>Den</th><th>Čas</th></tr>';
    29       foreach($DaysOfWeek as $DayIndex => $DayOfWeek)
     30      foreach($this->DaysOfWeek as $DayIndex => $DayOfWeek)
    3031      {
    31         $DbResult2 = $Database->query('SELECT *, DATE_FORMAT(OpenTime, "%k:%i") as OpenTime, DATE_FORMAT(CloseTime, "%k:%i") as CloseTime FROM SubjectOpenTimeInterval WHERE SubjectOpenTimeInterval.Subject = '.$Subject['Subject'].' AND ((DAYOFWEEK(OpenTime) + 0) MOD 7)='.$DayIndex);
     32        $DbResult2 = $this->Database->query('SELECT *, DATE_FORMAT(OpenTime, "%k:%i") as OpenTime, DATE_FORMAT(CloseTime, "%k:%i") as CloseTime FROM SubjectOpenTimeInterval WHERE SubjectOpenTimeInterval.Subject = '.$Subject['Subject'].' AND ((DAYOFWEEK(OpenTime) + 0) MOD 7)='.$DayIndex);
    3233        $Output .= '<tr><td>'.$DayOfWeek.'</td><td align="center">';
    3334        if($DbResult2->num_rows)
     
    4748    return($Output);
    4849  }
     50}
    4951
    50 echo(Show());
    51 
    52 ShowFooter();
     52$System->AddModule(new SubjectOpenTimePage());
     53$System->Modules['SubjectOpenTimePage']->GetOutput();
    5354
    5455?>
  • www/share/index.php

    r4 r148  
    11<?php
    22
    3 function ShowTime()
     3include('../global.php');
     4
     5class SharePage extends Page
    46{
    5   echo(date("H:i:s")."<br>\n");
    6   flush();
     7  var $FullTitle = 'Vyhledávání souborů';
     8  var $ShortTitle = 'Vyhledávání souborů';
     9  var $Dependencies = array('Log');
     10  var $MaxNesting = 20; // Maximální vnoření
     11  var $Promene = array( // Automatické zapamatování proměnných
     12    'keyword' => '',
     13    'file_type' => 0,
     14    'size' => '',
     15    'size_method' => 1,
     16    'size_units' => 2,
     17    'online' => 'on',
     18    'order' => 'size DESC',
     19    'page' => '0',
     20    'view' => 1,
     21  );
     22
     23  function ShowTime()
     24  {
     25    return(date("H:i:s")."<br />\n");
     26  }
     27
     28  // Inicializace Logu
     29  //$LogFile = fopen('info.log','w');
     30  function Loguj($Info)
     31  {
     32    //global $LogFile;
     33    //fputs($LogFile,$Info."\n");
     34  }
     35  //Show_Array($GLOBALS);
     36
     37    // Najde cestu ke keřenu
     38  function PlnaCesta($Row)
     39  {
     40    // Vyhledání cesty
     41    $Otec = $Row['parent'];
     42    $Cesta = ''; //$Row['name'];
     43    $i = 0;
     44    while(($Otec > 1) && ($i < $this->MaxNesting))
     45    {
     46      $DbResult = $this->Database->query('SELECT id,name,parent FROM items WHERE id='.$Otec);
     47      $Row = $DbResult->fetch_array();
     48      $this->Loguj('Name: '.$Row['name'].' ID:'.$Row['id'].' Parent:'.$Row['parent']);
     49      $Cesta = $Row['name'].'\\'.$Cesta;
     50      $Otec = $Row['parent'];
     51      $i++;
     52    }
     53    if($i >= $this->MaxNesting) $Cesta = '?'.'\\'.$Cesta;
     54    return('\\\\'.$Cesta);
     55  }
     56
     57  // Převede velikost v bajtech na odpovídající jednotky
     58  function PrevedVelikost($Velikost)
     59  {
     60    $Jednotky = array('B','kB','MB','GB','TB','PB','EB');
     61    while($Velikost >= 1024)
     62    {
     63      $Velikost = round($Velikost / 1024 * 10) / 10;
     64      array_shift($Jednotky);
     65    }
     66    return($Velikost.'&nbsp;'.$Jednotky[0]);
     67  }
     68
     69  function Show()
     70  {
     71    if(!$this->System->Modules['User']->CheckPermission('Share', 'Display')) return('Nemáte oprávnění');
     72
     73    // If not only online checkbox checked
     74    if(array_key_exists('view', $_POST) and !array_key_exists('online', $_POST)) $_POST['online'] = 'off';
     75
     76    // Default host list view
     77    if((count($_POST) == 0) and (count($_GET) == 0))
     78    {
     79      $_POST['view'] = 1;
     80      $_POST['page'] = 0; 
     81    }
     82
     83    // Toggle order direction
     84    if(array_key_exists('order', $_GET) and ($_SESSION['order'] == $_GET['order'])) $_GET['order'] .= ' DESC';
     85
     86    //print_r($_POST);
     87    foreach($this->Promene as $Index => $Prvek)
     88    {
     89      if(!array_key_exists($Index, $_SESSION)) $_SESSION[$Index] = $this->Promene[$Index];
     90      if(array_key_exists($Index, $_GET)) $_SESSION[$Index] = $_GET[$Index];
     91      if(array_key_exists($Index, $_POST)) $_SESSION[$Index] = $_POST[$Index];
     92      if(($Index == 'keyword') and (array_key_exists('view', $_GET))) $_SESSION[$Index] = $this->Promene[$Index];
     93      if(($Index == 'view') and ((array_key_exists('keyword', $_POST)) or (array_key_exists('keyword', $_GET)))) $_SESSION[$Index] = '';
     94      $$Index = $_SESSION[$Index];
     95      //echo('$'.$Index.' = '.$_SESSION[$Index].'<br>');
     96    }
     97    //echo($keyword);
     98    //if($keyword)
     99    //if($keyword != '') $view = '';
     100
     101    $this->Database->select_db('share');
     102
     103    // Log search
     104    if(array_key_exists('keyword', $_POST) or array_key_exists('keyword', $_GET))
     105      $this->System->Modules['Log']->NewRecord('Share', 'Hledaný výraz', $_SESSION['keyword']);
     106
     107    // Zobrazení formuláře
     108    $Output = '<form action="'.$this->System->Config['Web']['RootFolder'].'/share/" method="post">
     109    <input type="hidden" name="view" value="">
     110    <input type="hidden" name="page" value="0">
     111    Hledat: <input type="text" name="keyword" value="'.$keyword.'">';
     112    $Output .= '<input type="submit" value="Hledat">&nbsp;Typ: <select name="file_type" id="file_type">';
     113    $Selected = array('', '', '', '', '', '', '', '');
     114    $Selected[$file_type] = 'selected ';
     115    $Output .= '<option '.$Selected[0].'value="0">Vše
     116    <option '.$Selected[1].'value="1">Audio(mp3,wav,ogg,mid)
     117    <option '.$Selected[2].'value="2">Dokument(doc,txt,pdf)
     118    <option '.$Selected[3].'value="3">Komprimovaný(zip,rar,ace,tar)
     119    <option '.$Selected[4].'value="4">Video(mpeg,avi,ogm,mkv,asf)
     120    <option '.$Selected[5].'value="5">Obrázek(jpg,bmp,gif,png)
     121    <option '.$Selected[6].'value="6">Složka
     122    <option '.$Selected[7].'value="7">Spustitelný(exe,com)
     123    <option '.$Selected[7].'value="8">Obraz disku(iso,nrg,ccd,bin)
     124    </select>
     125    &nbsp;Velikost: <select name="size_method">';
     126    $Selected = array('', '', '');
     127    $Selected[$size_method] = 'selected ';
     128    $Output .= '<option '.$Selected[0].'value="0">Rovno
     129    <option '.$Selected[1].'value="1">Nejméně
     130    <option '.$Selected[2].'value="2">Nejvíce
     131    </select>
     132    <input type="edit" size="5" name="size" value="'.$size.'">
     133    <select name="size_units">';
     134    $Selected = array('', '', '', '');
     135    $Selected[$size_units] = 'selected ';
     136    $Output .= '<option '.$Selected[0].'value="0">B
     137    <option '.$Selected[1].'value="1">kB
     138    <option '.$Selected[2].'value="2">MB
     139    <option '.$Selected[3].'value="3">GB
     140    </select>&nbsp;';
     141
     142    if($online == 'on') $Selected = 'checked '; else $Selected = '';
     143    $Output .= '<input type="checkbox" '.$Selected.'name="online">Pouze aktivní uživatele<br>
     144    </form>';
     145
     146    //$Output .= $view;
     147    if($view != '')
     148    {
     149      // Zobrazení obsahu vybrané složky
     150      $DbResult = $this->Database->query('SELECT * FROM items WHERE id='.$view);
     151      $Row = $DbResult->fetch_array();
     152      $Cesta = $this->PlnaCesta($Row);
     153      $Output .= '<strong>Obsah složky: '.$Cesta.$Row['name'].'</strong><br />';
     154      $Podminka = '(parent='.$view.')';
     155      $Nahoru = $Row['parent'];
     156    } else
     157    {
     158      // Zobrazení výsledku vyhledávání
     159      $Output .= '<strong>Výsledek hledání:</strong><br />';
     160      $Podminka = "(name LIKE '%".strtr($keyword, '*', '%')."%')";
     161
     162      // Hledání podle typů
     163      $Pripony = array('',
     164        "(ext LIKE 'mp3') OR (ext LIKE 'wav') OR (ext LIKE 'ogg') OR (ext LIKE 'mid')",
     165        "(ext LIKE 'doc') OR (ext LIKE 'txt') OR (ext LIKE 'pdf')",
     166        "(ext LIKE 'zip') OR (ext LIKE 'rar') OR (ext LIKE 'ace') OR (ext LIKE 'tar')",
     167        "(ext LIKE 'mpeg') OR (ext LIKE 'mpg') OR (ext LIKE 'avi') OR (ext LIKE 'ogm') OR (ext LIKE 'mkv') OR (ext LIKE 'asf')",
     168        "(ext LIKE 'jpg') OR (ext LIKE 'gif') OR (ext LIKE 'bmp') OR (ext LIKE 'ico') OR (ext LIKE 'png')",
     169        "(type='2')",
     170        "(ext LIKE 'exe') OR (ext LIKE 'com')",
     171        "(ext LIKE 'iso') OR (ext LIKE 'nrg') OR (ext LIKE 'ccd') OR (ext LIKE 'bin') OR (ext LIKE 'mds')",
     172      );
     173      if($file_type > 0) $Podminka .= ' AND ('.$Pripony[$file_type].')';
     174
     175      //Hledání podle velikosti
     176      $Jednotky = array(1, 1024, 1048576, 1073741824);
     177      if(is_numeric($size))
     178      {
     179        $Metoda = array('=', '>', '<');
     180        $Velikost = $size * $Jednotky[$size_units];
     181        $Podminka .= ' AND (size'.$Metoda[$size_method].$Velikost.')';
     182      }
     183    }
     184
     185    // Omezení na online/offline uživatele
     186    $this->Database->select_db('is');
     187    if($online == 'on') $DbResult = $this->Database->query('SELECT id FROM hosts WHERE online=1 AND user>0');
     188    else $DbResult = $this->Database->query('SELECT id FROM hosts');
     189    $Vyber = '';
     190    while($Row = $DbResult->fetch_array()) $Vyber .= $Row['id'].',';
     191    $Podminka .= ' AND (host IN ('.substr($Vyber, 0, -1).'))';
     192    //echo($Podminka.'<br>');
     193    $this->Database->select_db('share');
     194
     195    //ShowTime();
     196
     197    // Zjištění počtu výskytů
     198    //DB_Query("SELECT COUNT(*) FROM items WHERE ($Podminka)");
     199    //$Row = DB_Row();
     200    //$Pocet = $Row[0];
     201
     202    // Zobrazení [..]
     203    if(($view != '') && ($page == 0) && ($Nahoru > 0))
     204    {
     205      $DbResult = $this->Database->query('SELECT * FROM items WHERE id='.$view);
     206      $Row = $DbResult->fetch_array();
     207      //ShowArray($Row);
     208      $Datum = explode(' ', $Row['date']);
     209      $upstr = '<tr><td bgcolor="#F0F0FF"><a href="index.php?view='.$Nahoru.'">[..]</a></td><td bgcolor="#F0F0FF" width="1%"></td><td align="right" bgcolor="#F0F0FF" width="1%">'.$this->PrevedVelikost($Row['size']).'</td><td bgcolor="#F0F0FF" width="90">'.$Datum[0].'</td><td bgcolor="#F0F0FF" width="50%">'.$Cesta.'</td></tr>';
     210    } else $upstr = '';
     211
     212    // Nacteni vysledku z databaze
     213    $PerPage = 30;
     214    $Dotaz = "SELECT SQL_CALC_FOUND_ROWS * FROM items WHERE ($Podminka)";
     215    if($order != '') $Dotaz .= ' ORDER BY '.$order;
     216    $Dotaz .= " LIMIT ".($page * $PerPage).",".$PerPage;
     217    $DbResult = $this->Database->query($Dotaz);
     218
     219    $DbResult2 = $this->Database->query("SELECT FOUND_ROWS()");
     220    $Row = $DbResult2->fetch_array();
     221    $Pocet = $Row[0];
     222
     223    if($Pocet > 0)
     224    {
     225      $Output .= 'Nalezeno celkem: '.$Pocet.' položek<br />';
     226    } else
     227    $Output .= 'Podle zadaných podmínek nic nenalezeno';
     228    if(($Pocet > 0) || ($upstr))
     229    {
     230      $Output .= '<table width="100%" style="font-size: 8pt;" border="0" cellpadding="2" cellspacing="2">
     231      <tr><th bgcolor="#E0E0FF"><a href="index.php?order=name">Soubor</a></th><th bgcolor="#E0E0FF"><a href="index.php?order=ext">Přípona</a></th><th bgcolor="#E0E0FF"><a href="index.php?order=size">Velikost</a></th><th bgcolor="#E0E0FF"><a href="index.php?order=date">Datum</a></th><th bgcolor="#E0E0FF">Umístění</th></tr>';
     232      $Output .= $upstr;
     233      if($Pocet > 0)
     234      {
     235        // Zobrazení tabulky s výsledky
     236        $Pages = floor($Pocet / $PerPage);
     237        // echo($Dotaz);
     238
     239        // Zobrazení poloľek
     240        while($Row = $DbResult->fetch_array())
     241        {
     242          // Loguj('Radek '.$Row['name']);
     243          $Radek = $Row;
     244          $Cesta = $this->PlnaCesta($Row);
     245          $Datum = explode(' ', $Radek['date']);
     246
     247          // Zobrazení řádku
     248          $Cesta2 = strtr($Cesta.$Radek['name'], '\\', '/');
     249          if($Radek['ext'] != '') $Cesta2 .= '.'.$Radek['ext'];
     250          if($Radek['type'] != 0) $Adresa = 'index.php?view='.$Radek['id'].'">['.$Radek['name'].']';
     251          else
     252          {
     253            if(strstr($_SERVER['HTTP_USER_AGENT'], 'Linux')) $Adresa = 'smb:'.$Cesta2.'">'.$Radek['name'];
     254            else $Adresa = 'file:///'.$Cesta2.'">'.$Radek['name'];
     255          }
     256          $Output .= '<tr><td bgcolor="#F0F0FF"><a href="'.$Adresa.'</a></td><td bgcolor="#F0F0FF" width="1%">'.$Radek['ext'].'</td><td align="right"   bgcolor="#F0F0FF" width="1%">'.$this->PrevedVelikost($Radek['size']).'</td><td bgcolor="#F0F0FF" width="90">'.$Datum[0].'</td><td bgcolor="#F0F0FF" width="50%" >'.$Cesta.'</td></tr>';
     257        }
     258        $Output .= '</table>';
     259      }
     260    }
     261    if($Pocet > 0)
     262    {
     263      // Celkový přehled
     264      if($view == 1)
     265      {
     266        $DbResult = $this->Database->query('SELECT SUM(size) FROM items WHERE (parent=1) AND (host IN ('.substr($Vyber,0,-1).'))');
     267        $Row = $DbResult->fetch_array();
     268        $SizeOnline = $this->PrevedVelikost($Row[0]);
     269        $DbResult = $this->Database->query('SELECT size FROM items WHERE id=1');
     270        $Row = $DbResult->fetch_array();
     271        $Size = $this->PrevedVelikost($Row['size']);
     272        $DbResult = $this->Database->query('SELECT COUNT(*) FROM items');
     273        $Row = $DbResult->fetch_array();
     274        $Output .= '<br />Celková velikost online sdílených dat: '.$SizeOnline;
     275        $Output .= '<br />Celkem v databázi '.$Row[0].' položek o celkové velikosti '.$Size.'<br />';
     276        $Output .= '<br /><strong>Popis služby:</strong><br />
     277        Tento vyhledávač slouží k prohledávání obsahu samba sdílení všech uživatelů. Je postaven na filosofii, čím více lidí bude sdílet data, tím větší bude pravděpodobnost, že najdete to co hledáte. Každý počítač je jednou za den oskenován a informace o jeho sdílení jsou zaneseny do databáze. Každou hodinu probíhá kontrola zapnutých počítačů a jejich případné oskenování. Při hledání použíjte znak * podobně jako při vyhledávání souborů na disku.<br><br>
     278        <a href="firefox.php">Vyhledávání přes internetový prohlížeč Firefox</a><br />';
     279        $Output .= '<a href="playlist.php">WinAMP playlist mp3 souborů online počítačů</a><br /><br />';
     280
     281        // Zobrazení chyb sdílení
     282        $Host = gethostbyaddr(GetRemoteAddress());
     283        //echo($Host);
     284        $Host = strtoupper(substr($Host, 0, strpos($Host, '.')));
     285        $DbResult = $this->Database->select('errors', '*', 'host="'.$Host.'"');
     286        if($DbResult->num_rows > 0) $Output .= '<strong>Výpis chybových hlášení pro počítač '.$Host.':</strong><br />';
     287        //echo('host="'.$Host.'"');
     288        while($Row = $DbResult->fetch_array())
     289        {
     290          $Row['message'] = str_replace('/', '\\', $Row['message']);
     291          $Output .= $Row['message'].'<br />';
     292        }
     293      }
     294
     295      // Zobrazení seznamu stránek
     296      if($Pages > 1)
     297      {
     298        if($page > 0) $Output .= '<a href="index.php?page=0">&lt;&lt;</a> ';
     299        if($page > 0) $Output .= '<a href="index.php?page='.($page-1).'">&lt;</a> ';
     300        $PagesMax = $Pages;
     301        $PagesMin = 0;
     302        if($PagesMax > ($page + 10)) $PagesMax = $page + 10;
     303        if($PagesMin < ($page - 10))
     304        {
     305          $Output .= ' .. ';
     306          $PagesMin = $page - 10;
     307        }
     308        for($i = $PagesMin; $i <= $PagesMax; $i++)
     309        {
     310          if($i == $page) $Output .= '<strong>';
     311          $Output .= '<a href="index.php?page='.$i.'">'.($i + 1).'</a> ';
     312          if($i == $page) $Output .= '</strong>';
     313        }
     314        if($PagesMax < $Pages) $Output .= ' .. ';
     315        if($page < $Pages) $Output .= '<a href="index.php?page='.($page + 1).'">&gt;</a> ';
     316        if($page < $Pages) $Output .= '<a href="index.php?page='.$Pages.'">&gt;&gt;</a>';
     317      }
     318    }
     319    return($Output);
     320  }
    7321}
    8322
    9 include('../global.php');
    10 include('../style.php');
    11 
    12 // Inicializace Logu
    13 //$LogFile = fopen('info.log','w');
    14 function Loguj($Info)
    15 {
    16   //global $LogFile;
    17   //fputs($LogFile,$Info."\n");
    18 }
    19 //Show_Array($GLOBALS);
    20 
    21 // Maximální vnoření
    22 $MaxNesting = 20;
    23 
    24 // Automatické zapamatování proměnných
    25 $Promene = array(
    26   'keyword' => '',
    27   'file_type' => 0,
    28   'size' => '',
    29   'size_method' => 1,
    30   'size_units' => 2,
    31   'online' => 'on',
    32   'order' => 'size DESC',
    33   'page' => '0',
    34   'view' => 1,
    35 );
    36 
    37 // If not only online checkbox checked
    38 if(array_key_exists('view',$_POST) && !array_key_exists('online',$_POST)) $_POST['online'] = 'off';
    39 
    40 //echo($_SERVER['HTTP_REFERER']);
    41 if(array_key_exists('HTTP_REFERER',$_SERVER))
    42 {
    43   $Url = explode('?',$_SERVER['HTTP_REFERER']);
    44   $Url = explode('/',$Url[0]);
    45   //ShowArray($Url);
    46   $Url[2] = gethostbyname($Url[2]);
    47   if($Url[2]=='127.0.0.1') $Url[2] = '192.168.0.1';
    48   $Server = gethostbyname($_SERVER["HTTP_HOST"]);
    49   if($Server=='127.0.0.1') $Server = '192.168.0.1';
    50   $Url = implode('/',$Url);
    51   //echo($Url.',http://'.$Server.$_SERVER["SCRIPT_NAME"]);
    52   if(($Url!='http://'.$Server.$_SERVER["SCRIPT_NAME"])) { $_POST['view'] = 1; $_POST['page'] = 0; }
    53 } else { $_POST['view'] = 1; $_POST['page'] = 0; }
    54 
    55 // Default host list view
    56 if((count($_POST)==0) && (count($_GET)==0)) $_POST['view'] = 1;
    57 
    58 // Toggle order direction
    59 if(array_key_exists('order',$_GET)&&($_SESSION['order']==$_GET['order'])) $_GET['order'] .= ' DESC';
    60 
    61 //print_r($_POST);
    62 foreach($Promene as $Index => $Prvek)
    63 {
    64   if(!array_key_exists($Index, $_SESSION)) $_SESSION[$Index] = $Promene[$Index];
    65   if(array_key_exists($Index, $_GET)) $_SESSION[$Index] = $_GET[$Index];
    66   if(array_key_exists($Index, $_POST)) $_SESSION[$Index] = $_POST[$Index];
    67   if(($Index == 'keyword') and (array_key_exists('view', $_GET))) $_SESSION[$Index] = $Promene[$Index];
    68   if(($Index == 'view') and ((array_key_exists('keyword', $_POST)) or (array_key_exists('keyword', $_GET)))) $_SESSION[$Index] = '';
    69   $$Index = $_SESSION[$Index];
    70   //echo('$'.$Index.' = '.$_SESSION[$Index].'<br>');
    71 }
    72 //echo($keyword);
    73 //if($keyword)
    74 //if($keyword != '') $view = '';
    75 
    76 if(!isset($page)) $page = 0;
    77 
    78 $Database->select_db('share');
    79 
    80 // Najde cestu ke keřenu
    81 function PlnaCesta($Row)
    82 {
    83   global $MaxNesting, $Database;
    84  
    85   // Vyhledání cesty
    86   $Otec = $Row['parent'];
    87   $Cesta = ''; //$Row['name'];
    88   $i = 0;
    89   while(($Otec>1)&&($i<$MaxNesting))
    90   {
    91     $DbResult = $Database->query('SELECT id,name,parent FROM items WHERE id='.$Otec);
    92     $Row = $DbResult->fetch_array();
    93     Loguj('Name: '.$Row['name'].' ID:'.$Row['id'].' Parent:'.$Row['parent']);
    94     $Cesta = $Row['name'].'\\'.$Cesta;
    95     $Otec = $Row['parent'];
    96     $i++;
    97   }
    98   if($i>=$MaxNesting) $Cesta = '?'.'\\'.$Cesta;
    99   return('\\\\'.$Cesta);
    100 }
    101 
    102 // Převede velikost v bajtech na odpovídající jednotky
    103 function PrevedVelikost($Velikost)
    104 {
    105   $Jednotky = array('B','kB','MB','GB','TB','PB','EB');
    106   while($Velikost>=1024)
    107   {
    108     $Velikost = round($Velikost/1024*10)/10;
    109     array_shift($Jednotky);
    110   }
    111   return($Velikost.'&nbsp;'.$Jednotky[0]);
    112 }
    113 ShowHeader('Vyhledávání souborů','Vyhledávání souborů');
    114 
    115 // Zobrazení formuláře
    116 echo('<form action="/share/index.php" method="post">
    117 <input type="hidden" name="view" value="">
    118 <input type="hidden" name="page" value="0">
    119 Hledat: <input type="text" name="keyword" value="'.$keyword.'">');
    120 echo('<input type="submit" value="Hledat">&nbsp;Typ: <select name="file_type" id="file_type">');
    121 $Selected = array('','','','','','','','');
    122 $Selected[$file_type] = 'selected ';
    123 echo('<option '.$Selected[0].'value="0">Vše
    124 <option '.$Selected[1].'value="1">Audio(mp3,wav,ogg,mid)
    125 <option '.$Selected[2].'value="2">Dokument(doc,txt,pdf)
    126 <option '.$Selected[3].'value="3">Komprimovaný(zip,rar,ace,tar)
    127 <option '.$Selected[4].'value="4">Video(mpeg,avi,ogm,mkv,asf)
    128 <option '.$Selected[5].'value="5">Obrázek(jpg,bmp,gif,png)
    129 <option '.$Selected[6].'value="6">Složka
    130 <option '.$Selected[7].'value="7">Spustitelný(exe,com)
    131 <option '.$Selected[7].'value="8">Obraz disku(iso,nrg,ccd,bin)
    132 </select>
    133 &nbsp;Velikost: <select name="size_method">');
    134 $Selected = array('','','');
    135 $Selected[$size_method] = 'selected ';
    136 echo('<option '.$Selected[0].'value="0">Rovno
    137 <option '.$Selected[1].'value="1">Nejméně
    138 <option '.$Selected[2].'value="2">Nejvíce
    139 </select>
    140 <input type="edit" size="5" name="size" value="'.$size.'">
    141 <select name="size_units">');
    142 $Selected = array('','','','');
    143 $Selected[$size_units] = 'selected ';
    144 echo('<option '.$Selected[0].'value="0">B
    145 <option '.$Selected[1].'value="1">kB
    146 <option '.$Selected[2].'value="2">MB
    147 <option '.$Selected[3].'value="3">GB
    148 </select>&nbsp;');
    149 
    150 if($online=='on') $Selected = 'checked '; else $Selected = '';
    151 echo('<input type="checkbox" '.$Selected.'name="online">Pouze aktivní uživatele<br>
    152 </form>');
    153 
    154 //echo($view);
    155 if($view != '')
    156 {
    157   // Zobrazení obsahu vybrané sloľky
    158   $DbResult = $Database->query("SELECT * FROM items WHERE id=$view");
    159   $Row = $DbResult->fetch_array();
    160   $Cesta = PlnaCesta($Row);
    161   echo('<strong>Obsah složky: '.$Cesta.$Row['name'].'</strong><br>');
    162   $Podminka = '(parent='.$view.')';
    163   $Nahoru = $Row['parent'];
    164 } else
    165 {
    166   // Zobrazení výsledku vyhledávání
    167   echo('<strong>Výsledek hledání:</strong><br>');
    168   $Podminka = "(name LIKE '%".strtr($keyword,'*','%')."%')";
    169  
    170   // Hledání podle typů
    171   $Pripony = array('',
    172     "(ext LIKE 'mp3') OR (ext LIKE 'wav') OR (ext LIKE 'ogg') OR (ext LIKE 'mid')",
    173     "(ext LIKE 'doc') OR (ext LIKE 'txt') OR (ext LIKE 'pdf')",
    174     "(ext LIKE 'zip') OR (ext LIKE 'rar') OR (ext LIKE 'ace') OR (ext LIKE 'tar')",
    175     "(ext LIKE 'mpeg') OR (ext LIKE 'mpg') OR (ext LIKE 'avi') OR (ext LIKE 'ogm') OR (ext LIKE 'mkv') OR (ext LIKE 'asf')",
    176     "(ext LIKE 'jpg') OR (ext LIKE 'gif') OR (ext LIKE 'bmp') OR (ext LIKE 'ico') OR (ext LIKE 'png')",
    177     "(type='2')",
    178     "(ext LIKE 'exe') OR (ext LIKE 'com')",
    179     "(ext LIKE 'iso') OR (ext LIKE 'nrg') OR (ext LIKE 'ccd') OR (ext LIKE 'bin') OR (ext LIKE 'mds')",
    180   );
    181   if($file_type>0) $Podminka .= ' AND ('.$Pripony[$file_type].')';
    182 
    183   //Hledání podle velikosti
    184   $Jednotky = array(1,1024,1048576,1073741824);
    185   if(is_numeric($size))
    186   {
    187     $Metoda = array('=','>','<');
    188     $Velikost = $size*$Jednotky[$size_units];
    189     $Podminka .= ' AND (size'.$Metoda[$size_method].$Velikost.')';
    190   }
    191 }
    192 
    193 // Omezení na online/offline uľivatele
    194 $Database->select_db('is');
    195 if($online == 'on') $DbResult = $Database->query('SELECT id FROM hosts WHERE online=1 AND user>0');
    196 else $DbResult = $Database->query('SELECT id FROM hosts');
    197 $Vyber = '';
    198 while($Row = $DbResult->fetch_array()) $Vyber .= $Row['id'].',';
    199 $Podminka .= ' AND (host IN ('.substr($Vyber,0,-1).'))';
    200 //echo($Podminka.'<br>');
    201 $Database->select_db('share');
    202 
    203 //ShowTime();
    204 flush();
    205 
    206 // Zjištění počtu výskytů
    207 //DB_Query("SELECT COUNT(*) FROM items WHERE ($Podminka)");
    208 //$Row = DB_Row();
    209 //$Pocet = $Row[0];
    210  
    211 // Zobrazení [..]
    212 if(($view!='')&&($page==0)&&($Nahoru>0))
    213 {
    214   $DbResult = $Database->query("SELECT * FROM items WHERE id=$view");
    215   $Row = $DbResult->fetch_array();
    216   //ShowArray($Row);
    217   $Datum = explode(' ',$Row['date']);
    218   $upstr = '<tr><td bgcolor="#F0F0FF"><a href="index.php?view='.$Nahoru.'">[..]</a></td><td bgcolor="#F0F0FF" width="1%"></td><td align="right" bgcolor="#F0F0FF" width="1%">'.PrevedVelikost($Row['size']).'</td><td bgcolor="#F0F0FF" width="90">'.$Datum[0].'</td><td bgcolor="#F0F0FF" width="50%">'.$Cesta.'</td></tr>';
    219 } else $upstr = '';
    220 
    221 // Nacteni vysledku z databaze
    222 $PerPage = 30;
    223 $Dotaz = "SELECT SQL_CALC_FOUND_ROWS * FROM items WHERE ($Podminka)";
    224 if($order!='') $Dotaz .= " ORDER BY $order";
    225 $Dotaz .= " LIMIT ".($page*$PerPage).",".$PerPage;
    226 $DbResult = $Database->query($Dotaz);
    227 
    228 $DbResult2 = $Database->query("SELECT FOUND_ROWS()");
    229 $Row = $DbResult2->fetch_array();
    230 $Pocet = $Row[0];
    231 
    232 if($Pocet > 0) { echo('Nalezeno celkem: '.$Pocet.' položek<br>'); } else echo('Podle zadaných podmínek nic nenalezeno');
    233 if(($Pocet > 0)||($upstr)) {
    234 echo('<table width="100%" style="font-size: 8pt;" border="0" cellpadding="2" cellspacing="2">
    235 <tr><th bgcolor="#E0E0FF"><a href="index.php?order=name">Soubor</a></th><th bgcolor="#E0E0FF"><a href="index.php?order=ext">Přípona</a></th><th bgcolor="#E0E0FF"><a href="index.php?order=size">Velikost</a></th><th bgcolor="#E0E0FF"><a href="index.php?order=date">Datum</a></th><th bgcolor="#E0E0FF">Umístění</th></tr>');
    236 echo $upstr;
    237 if($Pocet > 0) {
    238   // Zobrazení tabulky s výsledky
    239   $Pages = floor($Pocet/$PerPage);
    240   // echo($Dotaz);
    241 
    242   // Zobrazení poloľek
    243   while($Row = $DbResult->fetch_array())
    244   {
    245     // Loguj('Radek '.$Row['name']);
    246     $Radek = $Row;
    247     $Cesta = PlnaCesta($Row);
    248     $Datum = explode(' ',$Radek['date']);
    249 
    250     // Zobrazení řádku
    251     $Cesta2 = strtr($Cesta.$Radek['name'],'\\','/');
    252     if($Radek['ext']!='') $Cesta2 .= '.'.$Radek['ext'];
    253     if($Radek['type']!=0) $Adresa = 'index.php?view='.$Radek['id'].'">['.$Radek['name'].']';
    254     else
    255     {
    256       if(strstr($_SERVER['HTTP_USER_AGENT'],'Linux')) $Adresa = 'smb:'.$Cesta2.'">'.$Radek['name'];
    257       else $Adresa = 'file:///'.$Cesta2.'">'.$Radek['name'];
    258     }
    259     echo('<tr><td bgcolor="#F0F0FF"><a href="'.$Adresa.'</a></td><td bgcolor="#F0F0FF" width="1%">'.$Radek['ext'].'</td><td align="right" bgcolor="#F0F0FF" width="1%">'.PrevedVelikost($Radek['size']).'</td><td bgcolor="#F0F0FF" width="90">'.$Datum[0].'</td><td bgcolor="#F0F0FF" width="50%" >'.$Cesta.'</td></tr>');
    260 //    flush();
    261   }
    262   echo('</table>');
    263 }}
    264 if($Pocet > 0) {
    265   // Celkový přehled
    266   if($view==1)
    267   {
    268     $DbResult = $Database->query('SELECT SUM(size) FROM items WHERE (parent=1) AND (host IN ('.substr($Vyber,0,-1).'))');
    269     $Row = $DbResult->fetch_array();
    270     $SizeOnline = PrevedVelikost($Row[0]);
    271     $DbResult = $Database->query('SELECT size FROM items WHERE id=1');
    272     $Row = $DbResult->fetch_array();
    273     $Size = PrevedVelikost($Row['size']);
    274     $DbResult = $Database->query('SELECT COUNT(*) FROM items');
    275     $Row = $DbResult->fetch_array();
    276     echo('<br>Celková velikost online sdílených dat: '.$SizeOnline);
    277     echo('<br>Celkem v databázi '.$Row[0].' položek o celkové velikosti '.$Size.'<br>');
    278     echo('<br><strong>Popis služby:</strong><br>
    279     Tento vyhledávač slouží k prohledávání obsahu samba sdílení všech uživatelů. Je postaven na filosofii, čím více lidí bude sdílet data, tím větší bude pravděpodobnost, že najdete to co hledáte. Každý počítač je jednou za den oskenován a informace o jeho sdílení jsou zaneseny do databáze. Každou hodinu probíhá kontrola zapnutých počítačů a jejich případné oskenování. Při hledání použíjte znak * podobně jako při vyhledávání souborů na disku.<br><br>
    280     <a href="firefox.php">Vyhledávání přes internetový prohlížeč Firefox</a><br>');
    281     echo('<a href="playlist.php">WinAMP playlist mp3 souborů online počítačů</a><br><br>');
    282    
    283     // Zobrazení chyb sdílení
    284     $Host = gethostbyaddr(GetRemoteAddress());
    285     //echo($Host);
    286     $Host = strtoupper(substr($Host, 0, strpos($Host, '.')));
    287     $DbResult = $Database->select('errors', '*', 'host="'.$Host.'"');
    288     if($DbResult->num_rows > 0) echo('<strong>Výpis chybových hlášení pro počítač '.$Host.':</strong><br>');
    289     //echo('host="'.$Host.'"');
    290     while($Row = $DbResult->fetch_array())
    291     {
    292       $Row['message'] = str_replace('/', '\\', $Row['message']);
    293       echo($Row['message'].'<br>');
    294     }
    295   }
    296 
    297   // Zobrazení seznamu stránek
    298   if($Pages>1)
    299   {
    300     if($page>0) echo('<a href="index.php?page=0">&lt;&lt;</a> ');
    301     if($page>0) echo('<a href="index.php?page='.($page-1).'">&lt;</a> ');
    302     $PagesMax = $Pages;
    303     $PagesMin = 0;
    304     if($PagesMax>($page+10)) $PagesMax = $page+10;
    305     if($PagesMin<($page-10))
    306     {
    307       echo(' .. ');
    308       $PagesMin = $page-10;
    309     }
    310     for($i=$PagesMin;$i<=$PagesMax;$i++)
    311     {
    312       if($i==$page) echo('<strong>');
    313       echo('<a href="index.php?page='.$i.'">'.($i+1).'</a> ');
    314       if($i==$page) echo('</strong>');
    315     }
    316     if($PagesMax<$Pages) echo(' .. ');
    317     if($page<$Pages) echo('<a href="index.php?page='.($page+1).'">&gt;</a> ');
    318     if($page<$Pages) echo('<a href="index.php?page='.$Pages.'">&gt;&gt;</a>');
    319   }
    320 }
    321 
    322 ShowFooter();
     323$System->AddModule(new SharePage());
     324$System->Modules['SharePage']->GetOutput();
     325
    323326?>
  • www/style.css

    r146 r148  
    11body
    22{
    3 }
    4 
    5 #MenuItem
     3  font-family: sans-serif;
     4}
     5
     6#MainTable
     7{
     8  width: 100%;
     9}
     10
     11#MainTable td
     12{
     13  border-width: 0px 1px 0px 0px;
     14  border-style: solid;
     15  border-color: silver;
     16  padding: 0px 1px 0px 1px;
     17}
     18
     19#MainTable td .Panel
     20{
     21  border-width: 0px 0px 0px 0px;
     22  border-style: solid;
     23  border-color: #e0e0ff;
     24  padding: 10px 5px 10px 5px;
     25}
     26
     27#MainTable td .PanelTitle
     28{
     29  border-width: 0px 0px 2px 0px;
     30  border-style: solid;
     31  border-color: #6060ff;
     32  font-weight: bold;
     33  margin: 0px 0px 3px 0px;
     34}
     35
     36#MainTable td .PanelTitleRight
     37{
     38  border-width: 0px 0px 2px 0px;
     39  border-style: solid;
     40  border-color: #6060ff;
     41  margin: 0px 0px 3px 0px;
     42  text-align: right;
     43}
     44
     45#MainTable td td
     46{
     47  border-width: 0px 0px 0px 0px;
     48  border-style: solid;
     49  border-color: silver;
     50}
     51
     52form
     53{
     54  margin: 10px 10px 10px 10px;
     55}
     56
     57.MenuItem
    658{
    759  float: left;
    860}
    961
    10 #MenuItem2
     62.MenuItem2
    1163{
    1264  text-align: right;
    1365  width: 100%;
     66  font-weight: normal;
    1467}
    1568
     
    2578}
    2679
    27 #Navigation
     80.Navigation
    2881{
    2982  border-style: solid;
     
    3285  margin-bottom: 3px;
    3386  padding-bottom: 2px;
     87}
     88
     89.Navigation img
     90{
     91  margin: 0px 0px 0px 0px;
     92  padding: 0px 0px 0px 0px;
     93  border-width: 0px 0px 0px 0px;
     94  vertical-align: middle;
    3495}
    3596
     
    118179}
    119180
     181
     182.BasicTable
     183{
     184  width: 100%;
     185}
     186
     187.BasicTable td
     188{
     189  text-align: left;
     190  padding: 3px 3px 3px 3px;
     191}
     192
     193.BasicTable .Header
     194{
     195  text-align: right;
     196  padding: 3px 3px 3px 3px;
     197}
     198
     199.ChatHistory .Year
     200{
     201  border-style: solid;
     202  border-bottom-color: gray;
     203  border-width: 0px 0px 1px 0px;
     204  margin-bottom: 3px;
     205  padding-bottom: 2px;
     206}
     207
     208.ChatHistory .Year .YearContent
     209{
     210  margin-left: 15px;
     211  margin-right: 15px;
     212}
     213
     214.ChatHistory .Year .YearContent .Months
     215{
     216  border-style: solid;
     217  border-bottom-color: gray;
     218  border-width: 0px 0px 1px 0px;
     219  margin-bottom: 3px;
     220  padding-bottom: 2px;
     221}
     222
     223.ChatHistory .Year .YearContent .Months span
     224{
     225  position: absolute;
     226  left: 100px;
     227}
     228
     229.ChatHistory .YearContent .Months span strong
     230{
     231  border-style: solid;
     232  border-width: 1px;
     233  border-color: black;
     234  padding-left: 3px;
     235}
     236
     237.ChatHistoryText
     238{
     239  font-size: small;
     240  padding: 10px 0px 10px 0px;
     241}
     242
    120243.WideTable
    121244{
  • www/style.php

    r140 r148  
    1414function ShowHeader($Title, $Path, $BodyParam = '')
    1515{
    16   global $Time_Start, $refresh, $Config, $User, $PathTree;
     16  global $Time_Start, $refresh, $Config, $User, $PathTree, $Database, $System;
    1717
    1818  $Time_Start = GetMicrotime();         // Zjisti počáteční čas
     
    134134  $Navigation = substr($Navigation, 0, -6);
    135135
    136   $Output = '<?xml version="1.0" encoding="'.$Config['Web']['Charset'].'"?>'."\n".
    137   '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n".
    138   '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'."\n".
    139   '<meta http-equiv="content-type" content="text/html; charset=utf-8" />'.
    140   '<head><link rel="stylesheet" href="'.$Config['Web']['RootFolder'].'/style.css" type="text/css" media="all" />'."\n".
    141   '<script type="text/javascript" src="'.$Config['Web']['RootFolder'].'/global.js"></script>'."\n".
    142   '<title>'.$Config['Web']['Title'].' - '.$Path.'</title>'."\n".
    143   '</head><body style="font-family: sans-serif;" '.$BodyParam.'>
     136  $Output = '<?xml version="1.0" encoding="'.$Config['Web']['Charset'].'"?>'.
     137  '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'.
     138  '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'.
     139  '<head><link rel="stylesheet" href="'.$Config['Web']['RootFolder'].'/style.css" type="text/css" media="all" />'.
     140  '<meta http-equiv="content-type" content="text/html; charset='.$Config['Web']['Charset'].'" />'.
     141  '<script type="text/javascript" src="'.$Config['Web']['RootFolder'].'/global.js"></script>'.
     142  '<title>'.$Config['Web']['Title'].' - '.$Path.'</title>
     143  </head><body'.$BodyParam.'>
    144144<div id="Title">'.$Title.'</div>
    145 <div id="Navigation"><span id="MenuItem"><strong>Navigace &gt;&gt;</strong> '.$Navigation.'</span><div id="MenuItem2">';
    146 //  if($User->User['Id'] == $User->AnonymousUserId)
    147     //$Output .= '<a href="'.$Config['Web']['RootFolder'].'?Action=LoginForm">Přihlášení</a> <a href="'.$Config['Web']['RootFolder'].'?Action=RegistrationForm">Registrace</a>';
    148 //      else $Output .= $User->User['Name'].' <a href="?Action=Logout">Odhlásit</a> <a href="?Action=UserOptions">Nastavení</a>';
    149   $Output .= '&nbsp;</div></div>';
     145<div class="Navigation"><span class="MenuItem"><strong>Navigace &gt;&gt;</strong> '.$Navigation.'</span><div class="MenuItem2">&nbsp;';
     146  //if($System->Modules['User']->User['Id'] == $System->Modules['User']->AnonymousUserId)
     147  //  $Output .= '<a href="'.$Config['Web']['RootFolder'].'?Action=LoginForm">Přihlášení</a> <a href="'.$Config['Web']['RootFolder'].'?Action=RegistrationForm">Registrace</a>';
     148  //    else $Output .= $System->Modules['User']->User['Name'].' <a href="?Action=Logout">Odhlásit</a> <a href="?Action=UserOptions">Nastavení</a>';
     149  $Output .= '</div></div>';
    150150  echo($Output);
    151151}
     
    157157  $Time = floor((GetMicrotime() - $Time_Start) * 100) / 100;
    158158  echo('<div id="Footer">
    159   <i>| Web mistr: Jiří Hajda | e-mail: robie@centrum.cz | ICQ: 277158770 | Vygenerováno za '.$Time.' s | Verze: 1.1 | Úprava skriptu: '.date('j.n.Y',filemtime($_SERVER['SCRIPT_FILENAME'])).' |</i>
     159  <i>| Správa webu: Jiří Hajda | e-mail: robie@centrum.cz | Vygenerováno za '.$Time.' s | Verze: 1.1 | Úprava skriptu: '.date('j.n.Y',filemtime($_SERVER['SCRIPT_FILENAME'])).' |</i>
    160160  </div>');
    161161  //ShowArray($GLOBALS);
     
    163163}
    164164
     165
    165166?>
  • www/telseznam.php

    r4 r148  
    11<?php
     2include_once('global.php');
    23
    3 include('style.php');
    4 ShowHeader('Seznam telefoních èísel','Telefonní seznam');
    5 echo('<img width="100%" src="images/telseznam.jpg">');
    6 ShowFooter();
     4class PhoneBookPage extends Page
     5{
     6  var $FullTitle = 'Seznam telefoních čísel';
     7  var $ShortTitle = 'Telefonní seznam';
     8
     9  function Show()
     10  {
     11    $Output = '<img alt="Telefonní seznam" width="100%" src="images/telseznam.jpg">';
     12    return($Output);
     13  }
     14}
     15
     16$System->AddModule(new PhoneBookPage());
     17$System->Modules['PhoneBookPage']->GetOutput();
    718
    819?>
  • www/tkr.php

    r4 r148  
    11<?php
    2 include('style.php');
    3 ShowHeader('Seznam televizních kanálů místní kabelové televize', 'Kanály kabelové televize');
     2include_once('global.php');
    43
    5 echo('<strong>Výpis kanálů:</strong><br>'.
    6 '<table cellpadding="3" cellspacing="0" border="1">'.
    7 '<tr><th>Číslo</th<th>Jméno stanice</th><th>Frekvence [MHz]</th><th>Jazyk</th></tr>');
    8 $DbResult = $Database->select('tkr', '*', ' 1 ORDER BY id');
    9 while($Row = $DbResult->fetch_array())
     4class CableTVChennelListPage extends Page
    105{
    11   echo('<tr><td>'.$Row['id'].'</td><td><a href="'.$Row['www'].'">'.$Row['name'].'</a></td><td align="right">'.($Row['freq']/1000).'</td><td>'.$Row['lang'].'</td></tr>');
     6  var $FullTitle = 'Seznam televizních kanálů místní kabelové televize';
     7  var $ShortTitle = 'Kanály kabelové televize';
     8
     9  function Show()
     10  {
     11    $Output = '<div align="center"><strong>Výpis kanálů:</strong><br>'.
     12'<table class="WideTable">'.
     13'<tr><th>Číslo</th<th>Jméno stanice</th><th>Frekvence [MHz]</th><th>Jazyk</th></tr>';
     14    $DbResult = $this->Database->select('tkr', '*', ' 1 ORDER BY id');
     15    while($Row = $DbResult->fetch_array())
     16    {
     17      $Output .= '<tr><td>'.$Row['id'].'</td><td><a href="'.$Row['www'].'">'.$Row['name'].'</a></td><td align="right">'.($Row['freq']/1000).'</td><td>'.$Row['lang'].'</td></tr>';
     18    }
     19    $Output .= '</table>Aktualizováno dne 17.12.2007<br></div>';
     20    return($Output);
     21  }
    1222}
    13 echo('</table>
    14 Aktualizováno dne 17.12.2007<br>');
    15 ShowFooter();
     23
     24$System->AddModule(new CableTVChennelListPage());
     25$System->Modules['CableTVChennelListPage']->GetOutput();
     26
    1627?>
  • www/ukoly.php

    r4 r148  
    11<?php
    2 include('style.php');
    3 ShowHeader('Informace o plánech a úkolech', 'Plány do budoucna');
    4 ?>
     2include_once('global.php');
    53
    6 <strong>Plánované úkoly:</strong><br>
     4class FuturePlansPage extends Page
     5{
     6  var $FullTitle = 'Informace o budoucích plánech a úkolech';
     7  var $ShortTitle = 'Informace o plánech a úkolech';
     8
     9  function Show()
     10  {
     11    $Output = '<strong>Plánované úkoly:</strong><br>
    712<div><ul>
    8 <li>Zprovoznit televizní server</li>
    9 <li>Pokusit se vytvořit přímé spojení z AP-SKARPA přes AP-JANICATA na AP-HAPPY a zprovoznit směrovače</li>
     13<li>Zprovoznit televizní server a streaming lokální kabelové televize po síti na způsob IPTV. Zpovoznění multicastového vysílání.</li>
     14<li>Pokusit se vytvořit přímé spojení z AP-SKARPA přes AP-JANICATA na AP-KOPECEK a zprovoznit směrovače</li>
    1015<li>Zprovoznit další webové kamery pro sledování koupaliště a vleku</li>
    1116<li>Vytvořit online mapu pokrytí sítě a vnitřních spojů</li>
    12 <li>Převést síť na živnost </li>
    1317<li>Informační systém na centrále (elektronické hlasování, registrace přípojek, atd.)</li>
    14 <li>Zřístupnit obsah infokanálu a seznam knižek v obecni knihovne</li>
    15 <li>Vytvořit levné zařízení pro posílání odezvy na ICMP pakety pro potřeby určování místa problémů v kabelových úsecích sítě</li>
     18<li>Zřístupnit online obsah infokanálu a seznam knižek v obecní knihovně</li>
     19<li>Zřídit poloprofesionální meteo stanici a zpřístupnit měřené hodnoty online</li>
    1620</ul></div>
    1721<br>
    1822<strong>Hotové úkoly:</strong><br>
    1923<div><ul>
     24<li>Vytvořit levné zařízení pro posílání odezvy na ICMP pakety pro potřeby určování místa problémů v kabelových úsecích sítě. (řešeno použitím nejlevnějších routerů)</li>
     25<li>Převést síť na živnost. (1.12.2007)</li>
    2026<li>Zprovoznit kontrolu přístupu k internetu pomocí VPN, zabezpečení šifrováním a heslem (13.8.2006)</li>
    2127<li>Zprovoznit kontrolu přístupu do sítě (záznam času, IP a MAC adresy, ad.) (20.7.2006)</li>
    2228<li>Vytvořit stromovou blokovou mapu sítě (26.12.2005)</li>
    23 </ul></div>
    24 <?
    25 ShowFooter();
     29</ul></div>';
     30    return($Output);
     31  }
     32}
     33
     34$System->AddModule(new FuturePlansPage());
     35$System->Modules['FuturePlansPage']->GetOutput();
     36
    2637?>
  • www/user.php

    r130 r148  
    11<?php
    22
    3 define('NICK_USED', 'Přezdívka použita!');
     3define('NICK_USED', 'Přihlašovací jméno již použito.');
     4define('EMAIL_USED', 'Email je již použitý.');
    45define('USER_REGISTRATED', 'Uživatel zaregistrován.');
    5 define('DATA_MISSING', 'Chybí emailová adresa, přezdívka, nebo některé z hesel!');
    6 define('PASSWORDS_UNMATCHED', 'Hesla si neodpovídají!');
     6define('USER_REGISTRATION_CONFIRMED', 'Vaše registrace byla potvrzena.');
     7define('DATA_MISSING', 'Chybí emailová adresa, přezdívka, nebo některé z hesel.');
     8define('PASSWORDS_UNMATCHED', 'Hesla si neodpovídají.');
     9define('ACCOUNT_LOCKED', 'Účet uzamčen. Po registraci je nutné provést aktivaci účtu podle zaslaného aktivačního emailu.');
    710define('USER_NOT_LOGGED', 'Nejste přihlášen.');
    811define('USER_LOGGED', 'Uživatel přihlášen.');
     
    1215define('USER_LOGGED_OUT', 'Byl jste odhlášen.');
    1316define('BAD_PASSWORD', 'Špatné heslo.');
     17define('USER_NOT_FOUND', 'Uživatel nenalezen.');
    1418define('USER_TIMEOUT', 300);  // in seconds
     19define('USER_PASSWORD_RECOVERY_SUCCESS', 'Přihlašovací údaje byly odeslány na zadanou emailovou adresu.');
     20define('USER_PASSWORD_RECOVERY_FAIL', 'Podle zadaných údajů nebyl nalezen žádný uživatel.');
     21define('USER_PASSWORD_RECOVERY_CONFIRMED', 'Nové heslo bylo aktivováno.');
     22
     23define('USER_EVENT_REGISTER', 1);
     24define('USER_EVENT_LOGIN', 2);
     25define('USER_EVENT_LOGOUT', 3);
     26define('USER_EVENT_OPTIONS_CHANGED', 4);
    1527
    1628class User extends Module
    1729{
     30  var $Dependencies = array('Log');
    1831  var $Roles = array();
    1932  var $User = array();
    2033  var $DefaultRole = 2;
    21   var $AnonymousUserId = 1;
     34  var $AnonymousUserId = 80;
    2235
    2336  function Check()
     
    2942    {
    3043      // Refresh time of last access
    31       $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('Time' => 'NOW()'));
    32     } else $this->Database->insert('UserOnline', array('SessionId' => $SID, 'User' => $this->AnonymousUserId, 'Time' => 'NOW()', 'IpAddress' => GetRemoteAddress(), 'HostName' => gethostbyaddr(GetRemoteAddress()))); 
     44      $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('ActivityTime' => 'NOW()'));
     45    } else $this->Database->insert('UserOnline', array('SessionId' => $SID, 'User' => $this->AnonymousUserId, 'LoginTime' => 'NOW()', 'ActivityTime' => 'NOW()', 'IpAddress' => GetRemoteAddress(), 'HostName' => gethostbyaddr(GetRemoteAddress())));
    3346    //echo($this->Database->LastQuery);
    34 
    35     // Odeber neaktivní uživatele
    36     $this->Database->delete('UserOnline', 'Time < DATE_SUB(NOW(), INTERVAL '.USER_TIMEOUT.' SECOND)');
    3747
    3848    // Zkontroluj přihlášení
    3949    $Query = $this->Database->select('UserOnline', '*', 'SessionId="'.$SID.'"');
    4050    $Row = $Query->fetch_array();
    41     if(($Row['User'] != $this->AnonymousUserId) and ($Query->num_rows > 0))
     51    if($Row['User'] != $this->AnonymousUserId)
    4252    {
    4353      $Query = $this->Database->select('User', '*', "Id=".$Row['User']."");
    4454      $this->User = $Query->fetch_array();
    4555      $Result = USER_LOGGED;
    46     } else
     56    } else 
    4757    {
    4858      $Query = $this->Database->select('User', '*', "Id=".$this->AnonymousUserId);
     
    5060      $Result = USER_NOT_LOGGED;
    5161    }
    52     $this->LoadPermission($this->User['Role']);
     62
     63    // Odeber neaktivní uživatele
     64    $DbResult = $this->Database->select('UserOnline', 'Id, User', 'ActivityTime < DATE_SUB(NOW(), INTERVAL '.USER_TIMEOUT.' SECOND)');
     65    while($DbRow = $DbResult->fetch_array())
     66    {
     67      $this->Database->delete('UserOnline', 'Id='.$DbRow['User']);
     68      $this->System->Modules['Log']->NewRecord('User', 'Logout');
     69    }
     70    //$this->LoadPermission($this->User['Role']);
    5371
    5472    // Role and permission
    55     $this->LoadRoles();
    56   }
    57 
    58   function Register($Nick, $Password, $Password2, $Email, $FullName)
    59   {
    60     global $Options;
     73    //$this->LoadRoles();
     74  }
     75
     76  function Register($Nick, $Password, $Password2, $Email, $FirstName, $SecondName)
     77  {
     78    global $Options, $Config;
     79
    6180    if(($Email == '') || ($Nick == '') || ($Password == '') || ($Password2 == '')) $Result = DATA_MISSING;
    6281    else if($Password != $Password2) $Result = PASSWORDS_UNMATCHED;
    63     else 
     82    else
    6483    {
    6584      // Je uživatel registrován?
    6685      $Query = $this->Database->select('User', '*', 'Name = "'.$Nick.'"');
    67       if($Query->num_rows() > 0) $Result = NICK_USED;
    68       else
    69       {
    70         $this->Database->insert('User', array('Name' => addslashes($Nick), 'FullName' => addslashes($FullName), 'Password' => addslashes($Password), 'Email' => htmlspecialchars($Email), 'Role' => $this->DefaultRole));
    71         $Result = USER_REGISTRATED;
     86      if($Query->num_rows > 0) $Result = NICK_USED;
     87      else
     88      {
     89        $Query = $this->Database->select('User', '*', 'Email = "'.$Email.'"');
     90        if($Query->num_rows > 0) $Result = EMAIL_USED;
     91        else
     92        {
     93          $this->Database->insert('User', array('Name' => $Nick, 'FirstName' => $FirstName, 'SecondName' => $SecondName, 'Password' => sha1($Password), 'Email' => $Email, 'RegistrationTime' => 'NOW()', 'Locked' => 1));
     94          $UserId = $this->Database->insert_id;
     95         
     96          $Subject = FromUTF8('Registrace nového účtu', 'iso2');
     97          $Message = 'Provedli jste registraci nového účtu na serveru <a href="http://'.$Config['Web']['Host'].$Config['Web']['RootFolder'].'">http://'.$Config['Web']['Host'].$Config['Web']['RootFolder']."</a>.<br>\nPokud jste tak neučinili, měli by jste tento email ignorovat.<br><br>\n\nVáš účet je: ".$Nick."\n<br>Pro dokončení registrace klikněte na ".'<a href="http://'.$Config['Web']['Host'].$Config['Web']['RootFolder'].'/?Action=UserRegisterConfirm&amp;User='.$UserId.'&amp;H='.sha1($Password).'">tento odkaz</a>.'."\n<br> \n\n<br><br>Na tento email neodpovídejte.";
     98          $AdditionalHeaders = "To: ".$Nick." <".$Email.">\n"."From: ".FromUTF8($Config['Web']['Title'], 'iso2')." <noreplay@zdechov.net>\n"."MIME-Version: 1.0\n"."Content-type: text/html; charset=utf-8";
     99          mail($Email, $Subject, $Message, $AdditionalHeaders);
     100          $Result = USER_REGISTRATED;
     101          $this->System->Modules['Log']->NewRecord('User', 'NewRegistration', $Nick);
     102        }
    72103      }
    73104    }
    74105    return($Result);
     106  }
     107
     108  function RegisterConfirm($Id, $Hash)
     109  {
     110    $DbResult = $this->Database->select('User', 'Id, Name, Password', 'Id = '.$Id);
     111    if($DbResult->num_rows > 0)
     112    {
     113      $Row = $DbResult->fetch_array();
     114      if($Hash == $Row['Password'])
     115      {
     116        $this->Database->update('User', 'Id='.$Row['Id'], array('Locked' => 0));
     117        $Output = USER_REGISTRATION_CONFIRMED;
     118        $this->System->Modules['Log']->NewRecord('User', 'RegisterConfirm', 'Username='.$Row['Name']);
     119      } else $Output = PASSWORDS_UNMATCHED;
     120    } else $Output = USER_NOT_FOUND;
     121    return($Output);
    75122  }
    76123
     
    83130    {
    84131      $Row = $Query->fetch_array();
    85       if($Row['Password'] != $Password) $Result = BAD_PASSWORD;
     132      if($Row['Password'] != sha1($Password)) $Result = BAD_PASSWORD;
     133      else if($Row['Locked'] == 1) $Result = ACCOUNT_LOCKED;
    86134      else
    87135      {
    88         $this->Database->update('User', 'Id='.$Row['Id'], array('LastLoginTime' => 'NOW()'));   
     136        $this->Database->update('User', 'Id='.$Row['Id'], array('LastLoginTime' => 'NOW()'));
    89137        $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('User' => $Row['Id']));
    90138        // načtení stavu stromu
    91         $Result = USER_LOGGED_IN;   
     139        $Result = USER_LOGGED_IN;
     140        $this->System->Modules['Log']->NewRecord('User', 'Login', 'Nick='.$Nick.',Host='.gethostbyaddr(GetRemoteAddress()));
    92141      }
    93142    } else $Result = USER_NOT_REGISTRED;
     143    $this->Check();
    94144    return($Result);
    95145  }
     
    99149    $SID = session_id();
    100150    $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('User' => $this->AnonymousUserId));
     151    $this->System->Modules['Log']->NewRecord('User', 'Logout', $this->User['Name']);
     152    $this->Check();
    101153    return(USER_LOGGED_OUT);
    102154  }
     
    129181      if($DbRow['Write']) $Value .= 'W';
    130182      $Result[$DbRow['Description']][$DbRow['Title']] = $Value;
    131     }   
     183    }
    132184    return($Result);
    133185  }
     186
     187  function CheckGroupPermission($GroupId, $OperationId)
     188  {
     189    // Check group-group relation
     190    $DbResult = $this->Database->select('PermissionGroupAssignment', '*', '`Group`="'.$GroupId.'" AND `Type`="Group"');
     191    while($DbRow = $DbResult->fetch_array())
     192    {
     193       if($this->CheckGroupPermission($DbRow['GroupOrOperation'], $OperationId) == true) return(true);
     194    }
     195
     196    // Check group-operation relation
     197    $DbResult = $this->Database->select('PermissionGroupAssignment', '*', '`Group`="'.$GroupId.'" AND `GroupOrOperation`="'.$OperationId.'" AND `Type`="Operation"');
     198    if($DbResult->num_rows > 0) return(true);
     199    return(false);
     200  }
     201
     202  function CheckPermission($Module, $Operation, $ItemType = '', $ItemIndex = 0)
     203  {
     204    $DbResult = $this->Database->select('PermissionOperation', 'Id', '`Module`="'.$Module.'" AND `Item`="'.$ItemType.'" AND `ItemId`='.$ItemIndex.' AND `Operation`="'.$Operation.'"');
     205    if($DbResult->num_rows > 0)
     206    {
     207      $DbRow = $DbResult->fetch_array();
     208      $OperationId = $DbRow['Id'];
     209
     210      // Check user-operation relation
     211      $DbResult = $this->Database->select('PermissionUserAssignment', '*', '`User`="'.$this->User['Id'].'" AND `GroupOrOperation`="'.$OperationId.'" AND `Type`="Operation"');
     212      if($DbResult->num_rows > 0) return(true);
     213
     214      // Check user-group relation
     215      $DbResult = $this->Database->select('PermissionUserAssignment', 'GroupOrOperation', '`User`="'.$this->User['Id'].'" AND `Type`="Group"');
     216      while($DbRow = $DbResult->fetch_array())
     217      {
     218         if($this->CheckGroupPermission($DbRow['GroupOrOperation'], $OperationId) == true) return(true);
     219      }
     220      return(false);
     221    } else return(false);
     222  }
     223
     224  function PasswordRecoveryRequest($Name, $Email)
     225  {
     226    global $Config;
     227
     228    $DbResult = $this->Database->select('User', 'Name, Id, Email, Password', '`Name`="'.$Name.'" AND `Email`="'.$Email.'"');
     229    if($DbResult->num_rows > 0)
     230    {
     231      $Row = $DbResult->fetch_array();
     232      $NewPassword = substr(sha1(strtoupper($Row['Name'])), 0, 7);
     233
     234      $Subject = 'Obnova hesla';
     235      $Message = 'Požádali jste o zaslání nového hesla na serveru <a href="http://'.$Config['Web']['Host'].$Config['Web']['RootFolder'].'">http://'.$Config['Web']['Host'].$Config['Web']['RootFolder']."</a>.<br>\nPokud jste tak neučinili, měli by jste tento email ignorovat.<br><br>\n\nVaše nové heslo k účtu ".$Row['Name']." je: ".$NewPassword."\n<br>Pro aktivaci tohoto hesla klikněte na ".'<a href="http://'.$Config['Web']['Host'].$Config['Web']['RootFolder'].'/?Action=PasswordRecoveryConfirm&amp;User='.$Row['Id'].'&amp;H='.$Row['Password'].'&amp;P='.$NewPassword.'">tento odkaz</a>.'."\n<br> Po přihlášení si prosím změňte heslo na nové.\n\n<br><br>Na tento email neodpovídejte.";
     236      $AdditionalHeaders = "To: ".$Row['Name']." <".$Row['Email'].">\n"."From: ".FromUTF8($Config['Web']['Title'], 'iso2')." <noreplay@zdechov.net>\n"."MIME-Version: 1.0\n"."Content-type: text/html; charset=utf-8";
     237      mail($Row['Email'], $Subject, $Message, $AdditionalHeaders);
     238      $Output = USER_PASSWORD_RECOVERY_SUCCESS;
     239      $this->System->Modules['Log']->NewRecord('User', 'PasswordRecoveryRequest', 'Username='.$Name.',Email='.$Email);
     240    } else $Output = USER_PASSWORD_RECOVERY_FAIL;
     241    return($Output);
     242  }
     243
     244  function PasswordRecoveryConfirm($Id, $Hash, $NewPassword)
     245  {
     246    $DbResult = $this->Database->select('User', 'Id, Name, Password', 'Id = '.$Id);
     247    if($DbResult->num_rows > 0)
     248    {
     249      $Row = $DbResult->fetch_array();
     250      $NewPassword2 = substr(sha1(strtoupper($Row['Name'])), 0, 7);
     251      if(($NewPassword == $NewPassword2) and ($Hash == $Row['Password']))
     252      {
     253        $this->Database->update('User', 'Id='.$Row['Id'], array('Password' => sha1($NewPassword), 'Locked' => 0));
     254        $Output = USER_PASSWORD_RECOVERY_CONFIRMED;
     255        $this->System->Modules['Log']->NewRecord('User', 'PasswordRecoveryConfirm', 'Username='.$Row['Name']);
     256      } else $Output = PASSWORDS_UNMATCHED;
     257    } else $Output = USER_NOT_FOUND;
     258    return($Output);
     259  }
    134260}
    135261
  • www/userlist.php

    r143 r148  
    11<?php
    2 include('style.php');
    32include_once('global.php');
    4 ShowHeader('Seznam uživatelů na síti', 'Seznam uživatelů');
    53
    6 //echo('<a href="#network">Nastavení sítě</a><br>');
    7 echo('<table border="1" cellspacing="0" cellpadding="2" style="font-size: small;"><tr><th>Jméno uživatele</th><th>E-mail</th><th>ICQ</th><th>Telefon</th><th>Počítače</th></tr>');
     4class UserListPage extends Page
     5{
     6  var $FullTitle = 'Seznam registrovaných uživatelů';
     7  var $ShortTitle = 'Seznam uživatelů';
    88
    9 $DbResult = $Database->select('users', '*,CONCAT(second_name," ",first_name) as fullname','role=2 ORDER BY fullname');
    10 while($User = $DbResult->fetch_array())
    11 {
    12   if($User['icq']>0) $ICQ = $User['icq']; else $ICQ = '&nbsp;';
    13   if($User['phone']>0) $Phone = $User['phone']; else $Phone = '&nbsp;';
    14  
    15   $DbResult2 = $Database->select('hosts','*','user='.$User['id'].' AND block=0 ORDER BY name');
    16   $Hosts = '';
    17   while($Host = $DbResult2->fetch_array())
     9  function Show()
    1810  {
    19     $Hosts = $Hosts.$Host['name'].', ';
    20     //'<img src="http://wwp.icq.com/scripts/online.dll?icq='.$Row['icq'].'&img=5">'.
     11    $Output = '<table class="WideTable" style="font-size: small;"><tr><th>Jméno uživatele</th><th>E-mail</th><th>ICQ</th><th>Telefon</th><th>Počítače</th></tr>';
     12
     13    $DbResult = $this->Database->select('users', '*, CONCAT(second_name," ",first_name) as fullname', '1 ORDER BY fullname');
     14    while($User = $DbResult->fetch_array())
     15    {
     16      if($User['icq'] > 0) $ICQ = $User['icq']; else $ICQ = '&nbsp;';
     17      if($User['phone'] > 0) $Phone = $User['phone']; else $Phone = '&nbsp;';
     18
     19      $DbResult2 = $this->Database->select('hosts', '*', 'user='.$User['id'].' AND block=0 ORDER BY name');
     20      $Hosts = '';
     21      while($Host = $DbResult2->fetch_array())
     22      {
     23        $Hosts = $Hosts.$Host['name'].', ';
     24        //'<img src="http://wwp.icq.com/scripts/online.dll?icq='.$Row['icq'].'&img=5">'.
     25      }
     26      if($Hosts != '') $Hosts = substr($Hosts, 0, -2);
     27      $Output .= '<tr><td>'.$User['fullname'].'</td><td>'.$User['email'].'&nbsp;</td><td>'.$ICQ.'</td><td>'.$Phone.'</td><td>'.$Hosts.'</td></tr>';
     28    }
     29    $Output .= '</table>';
     30    return($Output);
    2131  }
    22   if($Hosts != '') $Hosts = substr($Hosts, 0, -2);
    23   echo('<tr><td>'.$User['fullname'].'</td><td>'.$User['email'].'&nbsp;</td><td>'.$ICQ.'</td><td>'.$Phone.'</td><td>'.$Hosts.'</td></tr>');
    2432}
    25 echo('</table>');
    2633
    27 //for($i=0;$i<60;$i++) echo('<img //src="http://wwp.icq.com/scripts/online.dll?icq=277158770&img='.$i.'"><br>');
     34$System->AddModule(new UserListPage());
     35$System->Modules['UserListPage']->GetOutput();
    2836
    29 ShowFooter();
    3037?>
Note: See TracChangeset for help on using the changeset viewer.