Changeset 37 for trunk


Ignore:
Timestamp:
May 5, 2019, 5:17:06 PM (5 years ago)
Author:
chronos
Message:
  • Modified: Application made using classes System and Application.
  • Modified: Used Common package for better code reuse.
  • Modified: Application made modular. Web sections converted to application modules. They will register pages in main application object.
Location:
trunk
Files:
36 added
2 deleted
13 edited
5 moved

Legend:

Unmodified
Added
Removed
  • trunk/Config/Config.sample.php

    r36 r37  
    1212$Config['ItemsPerPage'] = 30;
    1313$Config['VisiblePagingItems'] = 5;
     14$Config['Web']['Admin'] = '';
     15$Config['Web']['AdminEmail'] = 'robie@centrum.cz';
     16$Config['Web']['Title'] = 'Tanec';
  • trunk/Global.php

    r31 r37  
    2424 
    2525  return $Config['BaseURL'].$URL;
     26}
     27
     28function ProcessURL()
     29{
     30  if(array_key_exists('REDIRECT_QUERY_STRING', $_SERVER))
     31    $PathString = $_SERVER['REDIRECT_QUERY_STRING'];
     32    else $PathString = '';
     33  if(substr($PathString, -1, 1) == '/') $PathString = substr($PathString, 0, -1);
     34  $PathItems = explode('/', $PathString);
     35  if(array_key_exists('REQUEST_URI', $_SERVER) and (strpos($_SERVER['REQUEST_URI'], '?') !== false))
     36    $_SERVER['QUERY_STRING'] = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?') + 1);
     37    else $_SERVER['QUERY_STRING'] = '';
     38  parse_str($_SERVER['QUERY_STRING'], $_GET);
     39  return($PathItems);
    2640}
    2741
     
    164178  ));
    165179}
     180
     181function GetMicrotime()
     182{
     183  list($Usec, $Sec) = explode(' ', microtime());
     184  return ((float)$Usec + (float)$Sec);
     185}
  • trunk/Modules/Meet/Import/Amblar.php

    r32 r37  
    2828  function Import()
    2929  {
    30     parent::Import();
     30    $Output = parent::Import();
    3131    $Content = file_get_contents($this->URL);
    3232
     
    3737    if ($Content == '')
    3838    {
    39       echo('Main block not isolated.</br>');
    40       return;
     39      $Output .= 'Main block not isolated.</br>';
     40      return $Output;
    4141    }
    4242
     
    7272      $MeetItem->Database = $this->Database;
    7373      $MeetItem->Source = $this->Id;
    74       $this->ImportItem($MeetItem);
     74      $Output .= $this->ImportItem($MeetItem);
    7575      $this->AddedCount += $MeetItem->AddIfNotExist();
    7676    }
     77    return $Output;
    7778  }
    7879
     
    8182    global $HeightTags, $AgeTags, $LevelTags;
    8283
     84    $Output = '';
    8385    $Content = file_get_contents($MeetItem->Link);
    8486
     
    8890    if ($Content == '')
    8991    {
    90       echo('Main block not isolated.</br>');
     92      $Output .= 'Main block not isolated.</br>';
    9193      return;
    9294    }
     
    106108      if ($Tag == 'Praha') $MeetItem->Location = 'Praha';
    107109    }
     110    return $Output;
    108111  }
    109112}
  • trunk/Modules/Meet/Import/AstraPraha.php

    r32 r37  
    55  function Import()
    66  {
    7     parent::Import();
     7    $Output = parent::Import();
    88    $Content = file_get_contents($this->URL);
    99
     
    1313    if ($Content == '')
    1414    {
    15       echo('Main block not isolated.</br>');
    16       return;
     15      $Output .= 'Main block not isolated.</br>';
     16      return $Output;
    1717    }
    1818
     
    4141      $this->AddedCount += $MeetItem->AddIfNotExist();
    4242    }
     43    return $Output;
    4344  }
    4445}
  • trunk/Modules/Meet/Import/Csts.php

    r31 r37  
    55  function Import()
    66  {
    7     parent::Import();
     7    $Output = parent::Import();
    88    $Content = file_get_contents($this->URL);
    99
     
    1313    if ($Content == '')
    1414    {
    15       echo('Main block not isolated.</br>');
    16       return;
     15      $Output .= 'Main block not isolated.</br>';
     16      return $Output;
    1717    }
    1818
     
    4747      $this->AddedCount += $MeetItem->AddIfNotExist();
    4848    }
     49    return $Output;
    4950  }
    5051}
  • trunk/Modules/Meet/Import/Eso.php

    r32 r37  
    55  function Import()
    66  {
    7     parent::Import();
     7    $Output = parent::Import();
    88    $Content = file_get_contents($this->URL);
    99
     
    1313    if ($Content == '')
    1414    {
    15       echo('Main block not isolated.</br>');
    16       return;
     15      $Output .= 'Main block not isolated.</br>';
     16      return $Output;
    1717    }
    1818
     
    5151      $this->AddedCount += $MeetItem->AddIfNotExist();
    5252    }
     53    return $Output;
    5354  }
    5455}
  • trunk/Modules/Meet/Import/Facebook.php

    r31 r37  
    66  {
    77    return;   
    8     parent::Import();
     8    $Output = parent::Import();
    99    $Content = file_get_contents($this->URL);
    1010    echo($Content);
     
    1515    if ($Content == '')
    1616    {
    17       echo('Main block not isolated.</br>');
    18       return;
     17      $Output .= 'Main block not isolated.</br>';
     18      return $Output;
    1919    }
    2020
     
    5050      $this->AddedCount += $MeetItem->AddIfNotExist();
    5151    }
     52    return $Output;
    5253  }
    5354}
  • trunk/Modules/Meet/Import/MajkluvSvet.php

    r31 r37  
    55  function Import()
    66  {
    7     parent::Import();
     7    $Output = parent::Import();
    88    $Content = file_get_contents($this->URL);
    99
     
    1313    if ($Content == '')
    1414    {
    15       echo('Main block not isolated.</br>');
    16       return;
     15      $Output .= 'Main block not isolated.</br>';
     16      return $Output;
    1717    }
    1818
     
    2929      $MeetItem->Name = trim(GetTextBetween($Item, "<span class='seznamka_nadpis'><b>", '</b>'));
    3030      $MeetItem->Height = trim(GetTextBetween($Item, "výška:", 'cm'));
    31       $MeetItem->Age = trim(GetTextBetween($Item, "věk:", 'let'));
     31      $MeetItem->Age = preg_replace("/[^0-9]/", "", trim(GetTextBetween($Item, "věk:", 'let')));
    3232      $MeetItem->Message = trim(GetTextBetween($Item, "display:block;text-align:justify;'>", '</span>'));
    3333      $MeetItem->Weight = GetWeightFromText($MeetItem->Message);
     
    5050      $this->AddedCount += $MeetItem->AddIfNotExist();
    5151    }
     52    return $Output;
    5253  }
    5354}
  • trunk/Modules/Meet/Import/SalsaDance.php

    r31 r37  
    55  function Import()
    66  {
    7     parent::Import();
     7    $Output = parent::Import();
    88    $Content = file_get_contents($this->URL);
    99    $BlockStart = '<ul class="comments">';
     
    1212    if ($Content == '')
    1313    {
    14       echo('Main block not isolated.</br>');
    15       return;
     14      $Output .= 'Main block not isolated.</br>';
     15      return $Output;
    1616    }
    1717
     
    4242      $this->AddedCount += $MeetItem->AddIfNotExist();
    4343    }
     44    return $Output;
    4445  }
    4546}
  • trunk/Modules/Meet/Import/Seznamka.php

    r32 r37  
    55  function Import()
    66  {
    7     parent::Import();
     7    $Output = parent::Import();
    88    $Content = file_get_contents($this->URL);
    9     $BlockStart = 'Tanec ...</h1 class=\'nadpis\'>';
    10     $BlockEnd = '<!--';
     9    $BlockStart = '<h1>Tanec ... : Seznamka</h1>';
     10    $BlockEnd = '<h2>Doporučujeme</h2>';
    1111    //echo($Content);
    1212    $Content = GetTextBetween($Content, $BlockStart, $BlockEnd);
    1313    if ($Content == '')
    1414    {
    15       echo('Main block not isolated.</br>');
    16       return;
     15      $Output .= 'Main block not isolated.</br>';
     16      return $Output;
    1717    }
    1818
    19     $ItemStart = '<div class=\'inztop\'>';
     19    $ItemStart = '<div class=\'col-xs-12\'>';
    2020    $ItemEnd = 'Odpovědět</a></div></div></div>';
    2121    while (strpos($Content, $ItemStart) !== false)
    2222    {
    2323      $Item = GetTextBetween($Content, $ItemStart, $ItemEnd);
     24      if ($Item == '') break;
    2425      $MeetItem = new MeetItem();
    2526      //$MeetItem->Image = trim(GetTextBetween($Item, '<div', '</div>'));
    26       if (strpos($Item, "return false\" class='") !== false)
    27       {
    28         $MeetItem->Gender = trim(GetTextBetween($Item, "return false\" class='", "'"));
    29       } else
    30       {
    31         $MeetItem->Gender = trim(GetTextBetween($Item, '<span class="ipoh ', '"'));
    32       }
     27      $MeetItem->Gender = trim(GetTextBetween($Item, "<span class=\"ipoh ", "\""));
    3328      if ($MeetItem->Gender == 'zena') $MeetItem->Gender = Gender::Female;
    34       else if ($MeetItem->Gender == 'muz') $MeetItem->Gender = Gender::Male;
    35       else $MeetItem->Gender = Gender::Undefined;   
     29        else if ($MeetItem->Gender == 'muz') $MeetItem->Gender = Gender::Male;
     30        else $MeetItem->Gender = Gender::Undefined;   
    3631      $MeetItem->Name = trim(GetTextBetween($Item, '>', '</span>'));
    3732      $MeetItem->Name = trim(strip_tags($MeetItem->Name));
    38       $Category = trim(GetTextBetween($Item, ' rel="nofollow">', '</a></span>'));
    39       $MeetItem->Age = trim(GetTextBetween($Item, ' rel="nofollow">', '</a></span>'));
     33      $Category = trim(GetTextBetween($Item, '" >', '</a>'));
     34      $MeetItem->Age = trim(GetTextBetween($Item, '" >', '</a>'));
    4035      $MeetItem->Age = trim(str_replace('let', '', $MeetItem->Age));
    41       $MeetItem->Location = trim(GetTextBetween($Item, ' rel="nofollow">', '</a></span>'));
    42       $MeetItem->Time = HumanDateToTime(trim(GetTextBetween($Item, '> </a>', '</span>')));
    43       $MeetItem->Message = trim(strip_tags(GetTextBetween($Item, 'margin-top:10px;\'>', '</div>')));
     36      $MeetItem->Location = trim(GetTextBetween($Item, '" >', '</a>'));
     37      $MeetItem->Time = trim(GetTextBetween($Item, 'TOP</a> &nbsp;', '</span>'));
     38      if ($MeetItem->Time == 'Včera') $MeetItem->Time = HumanDate(time() - 60*60*24);
     39        else if ($MeetItem->Time == 'Dnes') $MeetItem->Time = HumanDate(time());     
     40      $MeetItem->Time = HumanDateToTime($MeetItem->Time);
     41      $MeetItem->Message = trim(strip_tags(GetTextBetween($Item, '<p>', '</p>')));
    4442      $MeetItem->Link = GetTextBetween($Item, "<a href='", "'");
    4543      while (substr($MeetItem->Link, 0, 3) == '../')
     
    5452      $this->AddedCount += $MeetItem->AddIfNotExist();
    5553    }
     54    return $Output;
    5655  }
    5756}
  • trunk/Modules/Meet/Import/TanecniSkola.php

    r32 r37  
    55  function Import()
    66  {
     7    $Output = '';
    78    $HeightRange = array(
    89      '< 120 cm' => 120,
     
    2627    );
    2728
    28     parent::Import();
     29    $Output = parent::Import();
    2930    $Content = file_get_contents($this->URL);
    3031
     
    3435    if ($Content == '')
    3536    {
    36       echo('Main block not isolated.</br>');
    37       return;
     37      $Output .= 'Main block not isolated.</br>';
     38      return $Output;
    3839    }
    3940
     
    9495      }
    9596    }
     97    return $Output;
    9698  }
    9799}
  • trunk/Modules/Meet/Import/Vavruska.php

    r31 r37  
    55  function Import()
    66  {
    7     parent::Import();
     7    $Output = parent::Import();
    88    $Content = file_get_contents($this->URL);
    99
     
    1313    if ($Content == '')
    1414    {
    15       echo('Main block not isolated.</br>');
    16       return;
     15      $Output .= 'Main block not isolated.</br>';
     16      return $Output;
    1717    }
    1818
     
    4141      $this->AddedCount += $MeetItem->AddIfNotExist();
    4242    }
     43    return $Output;
    4344  }
    4445}
  • trunk/Modules/Meet/Meet.php

    r36 r37  
    11<?php
    22
    3 include_once('Import/Seznamka.php');
    4 include_once('Import/TanecniSkola.php');
    5 include_once('Import/AstraPraha.php');
    6 include_once('Import/Vavruska.php');
    7 include_once('Import/SalsaDance.php');
    8 include_once('Import/Amblar.php');
    9 include_once('Import/MajkluvSvet.php');
    10 include_once('Import/Csts.php');
    11 include_once('Import/Facebook.php');
    12 include_once('Import/Eso.php');
     3include_once(dirname(__FILE__).'/Import/Seznamka.php');
     4include_once(dirname(__FILE__).'/Import/TanecniSkola.php');
     5include_once(dirname(__FILE__).'/Import/AstraPraha.php');
     6include_once(dirname(__FILE__).'/Import/Vavruska.php');
     7include_once(dirname(__FILE__).'/Import/SalsaDance.php');
     8include_once(dirname(__FILE__).'/Import/Amblar.php');
     9include_once(dirname(__FILE__).'/Import/MajkluvSvet.php');
     10include_once(dirname(__FILE__).'/Import/Csts.php');
     11include_once(dirname(__FILE__).'/Import/Facebook.php');
     12include_once(dirname(__FILE__).'/Import/Eso.php');
    1313
    1414abstract class Gender
     
    3737  $Parts = explode(' ', $DateTime);
    3838  $DateParts = explode('.', $Parts[0]);
    39   if (count($Parts) > 1) $TimeParts = explode(':', $Parts[1]);
    40     else $TimeParts = array(0, 0, 0);
     39  if (count($Parts) > 1) {
     40    $TimeParts = explode(':', $Parts[1]);
     41    if (count($TimeParts) == 1) $TimeParts[1] = '0';
     42    if (count($TimeParts) == 2) $TimeParts[2] = '0';
     43  } else $TimeParts = array(0, 0, 0);
    4144  $Result = mktime($TimeParts[0], $TimeParts[1], $TimeParts[2], $DateParts[1], $DateParts[0], $DateParts[2]);
    4245  return($Result);
     
    277280  function Parse($Id = null)
    278281  {
     282    $Output = '';
    279283    if (($Id != null) and is_numeric($Id)) $Where = 'Id='.$Id;
    280284      else $Where = '1';
     
    294298      else if ($Method == 'eso') $Source = new MeetSourceEso();
    295299      else {
    296         echo('Unsupported parse method: '.$Method.'<br/>');
     300        $Output .= 'Unsupported parse method: '.$Method.'<br/>';
    297301        continue;
    298302      }
     
    303307      $Source->Name = $DbRow['Name'];
    304308      $this->Items[] = $Source;
    305       $Source->Import();
     309      $Output .= $Source->Import();
    306310    }
     311    return $Output;
    307312  }
    308313}
     
    319324  {
    320325    $this->AddedCount = 0;
    321     echo('Parsing '.$this->Name.' ('.$this->Id.')...</br>');
     326    $Output = 'Parsing '.$this->Name.' ('.$this->Id.')...</br>';
     327    return $Output;
    322328  }
    323329}
     
    347353      '(`Message` = "'.$this->Database->real_escape_string($this->Message).'") AND '.
    348354      '(`Email` = "'.$this->Database->real_escape_string($this->Email).'") AND '.
    349       '(DATE(`Time`) = "'.$this->Database->real_escape_string(TimeToMysqlDate($this->Time)).'")');
     355      '(`Time` = "'.$this->Database->real_escape_string(TimeToMysqlDateTime($this->Time)).'")');
    350356    if ($DbResult->num_rows == 0)
    351357    {
  • trunk/SQL/Update.php

    r34 r37  
    1414
    1515ALTER TABLE `MeetItem` ADD `TimeImport` DATETIME NULL AFTER `Link`;
     16
     17-- rev 35
     18CREATE TABLE `Movie` (
     19  `Id` int(11) NOT NULL,
     20  `NameCz` varchar(255) NOT NULL,
     21  `NameEn` varchar(255) NOT NULL,
     22  `Year` int(11) NOT NULL,
     23  `Imdb` varchar(255) NOT NULL,
     24  `Csfd` varchar(255) NOT NULL
     25) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     26
     27ALTER TABLE `Movie`
     28  ADD PRIMARY KEY (`Id`),
     29  ADD KEY `Year` (`Year`);
     30
     31ALTER TABLE `Movie`
     32  MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
  • trunk/index.php

    r36 r37  
    11<?php
    22
    3 include_once('Database.php');
    4 include_once('Config.php');
    5 include_once('Meet.php');
    6 include_once('RSS.php');
    7 include_once('Global.php');
    8 
    9 session_start();
    10 
    11 class Application
    12 {
    13   var $NoFullPage = false;
    14 
    15   function Link($URL)
    16   {
    17     return($this->Config['BaseURL'].$URL);
    18   }
    19 
    20   function AbsoluteLink($URL)
    21   {
    22     return($this->Config['HostName'].$this->Config['BaseURL'].$URL);
    23   }
    24 
    25   function Run()
    26   {
    27 
    28   }
    29 }
    30 
    31 class MyApplication extends Application
    32 {
    33   var $Database;
     3require_once('Config/Config.php');
     4require_once('Global.php');
     5require_once('Packages/Common/Common.php');
     6require_once('View.php');
     7
     8
     9require_once('Modules/Meet/Meet.php');
     10require_once('Modules/Meet/MeetPage.php');
     11require_once('Modules/Dance/Dance.php');
     12require_once('Modules/Movie/Movie.php');
     13require_once('Modules/School/School.php');
     14require_once('Modules/Club/Club.php');
     15
     16if(isset($_SERVER['REMOTE_ADDR'])) session_start();
     17
     18class ApplicationTanec extends Application
     19{
    3420  var $Config;
    3521  var $Title;
     22  var $Pages;
     23  var $PathItems;
     24  var $ShowPage;
     25  var $MainMenu;
     26  var $PageHeaders;
     27  var $Bars;
    3628
    3729  function __construct()
    3830  {
     31    parent::__construct();
     32    $this->ShowPage = true;
     33    $this->MainMenu = array();
     34    $this->PageHeaders = array();
     35    $this->Bars = array();
     36  }
     37
     38  function Link($URL)
     39  {
     40    return($this->Config['BaseURL'].$URL);
     41  }
     42
     43  function AbsoluteLink($URL)
     44  {
     45    return($this->Config['HostName'].$this->Config['BaseURL'].$URL);
    3946  }
    4047
    4148  function ShowMenu()
    4249  {
    43     $Output = '<div>'.
    44       '<a href="'.$this->Link('/tance/').'">Tance</a> '.
    45       '<a href="'.$this->Link('/skoly/').'">Školy</a> '.
    46       '<a href="'.$this->Link('/seznamka/').'">Seznamka</a> '.
    47       '<a href="'.$this->Link('/filmy/').'">Filmy</a> '.
    48       '</div>';
     50    $Output = '<div>';
     51    foreach($this->MainMenu as $MenuItem)
     52    {
     53      $Output .= '<a href="'.$this->Link($MenuItem['Link']).'">'.$MenuItem['Title'].'</a> ';
     54    }
     55    $Output .= '</div>';
    4956    return($Output);
    5057  }
     
    6370    return($PathItems);
    6471  }
    65 
    66   function ShowDanceList()
    67   {
    68     $this->Title = 'Tance - '.$this->Title;
    69     $Output = '<div class="title">Tance</div>';
    70     $Output .= '<table class="WideTable">';
    71     $Output .= '<tr><th>Název</th><th>Skupina</th>';
    72     $DbResult2 = $this->Database->select('ResourceGroup', '*');
    73     while($ResourceGroup = $DbResult2->fetch_assoc())
    74     {
    75       $Output .= '<th>'.$ResourceGroup['Name'].'</th>';
    76     }
    77     $Output .= '</tr>';
    78     $DbResult = $this->Database->select('Dance', '*, (SELECT Name FROM DanceGroup WHERE DanceGroup.Id=Dance.Group) AS GroupName', '1 ORDER BY `Name`');
    79     while($Dance = $DbResult->fetch_assoc())
    80     {
    81       $Output .= '<tr><td>'.$Dance['Name'].'</td><td>'.$Dance['GroupName'].'</td>';
    82       $DbResult2 = $this->Database->select('ResourceGroup', '*');
    83       while($ResourceGroup = $DbResult2->fetch_assoc())
    84       {
    85         $Output .= '<td>';
    86         $DbResult3 = $this->Database->select('Resource', '*', '(`Dance`='.$Dance['Id'].') AND (`Group`='.$ResourceGroup['Id'].')');
    87         while($Resource = $DbResult3->fetch_assoc())
    88         {
    89           $Output .= '<a href="'.$Resource['URL'].'">'.$Resource['Name'].'</a> ';
    90         }
    91         $Output .= '</td>';
    92       }
    93       $Output .= '</tr>';
    94     }
    95     $Output .= '</table>';
    96 
    97     return($Output);
    98   }
    99 
    100   function ShowSchoolList()
    101   {
    102     $this->Title = 'Taneční školy - '.$this->Title;
    103     $Output = '<div class="title">Taneční školy</div>';
    104     $Output .= '<table class="WideTable">';
    105     $Output .= '<tr><th>Název</th><th>Webové stránky</th><th>Adresa</th>';
    106     $Output .= '</tr>';
    107     $DbResult = $this->Database->select('School', '*', '1 ORDER BY `Name`');
    108     while($School = $DbResult->fetch_assoc())
    109     {
    110       $Output .= '<tr>'.
    111         '<td>'.$School['Name'].'</td>'.
    112         '<td><a href="'.$this->Link($School['URL']).'">'.$School['URL'].'</a></td>'.
    113         '<td>'.$School['Address'].'</td>'.
    114         '</tr>';
    115     }
    116     $Output .= '</table>';
    117 
    118     return($Output);
    119   }
    120 
    121   function ShowMovieList()
    122   {
    123     $this->Title = 'Filmy - '.$this->Title;
    124     $Output = '<div class="title">Filmy</div>';
    125     $Output .= '<table class="WideTable">';
    126     $Output .= '<tr><th>Rok</th><th>Český název</th><th>Anglický název</th><th>IMDb</th><th>ČSFD</th>';
    127     $Output .= '</tr>';
    128     $DbResult = $this->Database->select('Movie', '*', '1 ORDER BY `Year` DESC');
    129     while($Movie = $DbResult->fetch_assoc())
    130     {
    131       $Output .= '<tr>'.
    132         '<td>'.$Movie['Year'].'</td>'.
    133         '<td>'.$Movie['NameCz'].'</td>'.
    134         '<td>'.$Movie['NameEn'].'</td>'.
    135         '<td><a href="'.$Movie['Imdb'].'">Otevřít</a></td>'.
    136         '<td><a href="'.$Movie['Csfd'].'">Otevřít</a></td>'.
    137         '</tr>';
    138     }
    139     $Output .= '</table>';
    140 
    141     return($Output);
    142   }
    143 
    144   function ShowMeetUpdate()
    145   {
    146     $MeetSources = new MeetSources();
    147     $MeetSources->Database = $this->Database;
    148     if (array_key_exists('i', $_GET)) $MeetSources->Parse($_GET['i']);
    149       else $MeetSources->Parse();
    150   }
    151 
    152   function ShowMeetList()
    153   {
    154     $this->Title = 'Seznamka - '.$this->Title;
    155     $Output = '';
    156     if (array_key_exists('lvm', $_GET) and ($_GET['lvm'] == 'seznam'))
    157     {
    158       $this->NoFullPage = true;
    159       if (array_key_exists('name', $_GET) ) $_SESSION['name'] = $_GET['name'];
    160       if (array_key_exists('location', $_GET) ) $_SESSION['location'] = $_GET['location'];
    161       if (array_key_exists('message', $_GET) ) $_SESSION['message'] = $_GET['message'];
    162       if (array_key_exists('vekod', $_GET) ) $_SESSION['vekod'] = $_GET['vekod'];
    163       if (array_key_exists('vekdo', $_GET) ) $_SESSION['vekdo'] = $_GET['vekdo'];
    164       if (array_key_exists('vyskaod', $_GET) ) $_SESSION['vyskaod'] = $_GET['vyskaod'];
    165       if (array_key_exists('vyskado', $_GET) ) $_SESSION['vyskado'] = $_GET['vyskado'];
    166       if (array_key_exists('vahaod', $_GET) ) $_SESSION['vahaod'] = $_GET['vahaod'];
    167       if (array_key_exists('vahado', $_GET) ) $_SESSION['vahado'] = $_GET['vahado'];
    168       if (array_key_exists('pohlavi', $_GET) ) {
    169         if ($_GET['pohlavi'] > 0) $_SESSION['pohlavi'] = $_GET['pohlavi'];
    170           else unset($_SESSION['pohlavi']);
    171       }
    172     } else {
    173     $Output .= '<script type="text/javascript">function reloadlist(){ $(\'#meetlist\').load(document.URL + \' #meetlist\');}'.
    174       ' var load_timer = 100;
    175    var ltimer = null;
    176 
    177    function checkOut(kc,obj){
    178       if(kc==13) $(obj).blur();
    179    }
    180    function initLTimer(tm){
    181       if(ltimer) clearTimeout(ltimer);
    182       ltimer = setTimeout("freloader()",tm);
    183    }
    184    function stopLTimer(){
    185       if(ltimer) clearTimeout(ltimer);
    186       ltimer = null;
    187    }
    188 
    189    var cf = {};
    190 
    191    function setupc(key,val){
    192       //console.log(\'setup-control-\'+key+\' = \'+val);
    193       if(key==\'vekod\' || key==\'vekdo\' || key==\'vyskaod\' || key==\'vyskado\' || key==\'vahaod\' || key==\'vahado\') {
    194          var ccv = $(\'#\'+key).val();
    195          if(ccv!=val) $(\'#\'+key).val(val==0?\'\':val);
    196       }
    197       if(key==\'pohlavi\') {
    198          $(\'.c\'+key).removeClass(\'active\');
    199          $(\'#\'+key+val).addClass(\'active\');
    200       }
    201    }
    202 
    203    function upf(key,val,lonreload){
    204       if(key!=\'first\') cf[\'first\']=0; else st();
    205       setupc(key,val);
    206       cf[key]=val;
    207       if(lonreload) initLTimer(1000); else initLTimer(100);
    208    }
    209 
    210    function freloader(){
    211       ltimer = null;
    212       var qp = jQuery.param( cf );
    213       $(\'#list_content\').html(\'\'); $(\'#list_loading\').show();
    214       $.get(\''.$this->Link('/seznamka/').'?lvm=seznam&\'+qp,function(data){$(\'#list_loading\').hide();$(\'#list_content\').html(data);htip()})
    215    }'.
    216       '</script>';
    217     $Output .= '<div class="title">Inzeráty</div>';
    218     $Output .= '<div class="btn-group ma3">'.
    219       '<div class="label-box">Pohlaví</div>'.
    220       '<button class="btn btn-filter cpohlavi btn-ico" onclick="upf(\'pohlavi\',0)" id="pohlavi0" data-toggle="tooltip" '.
    221       'data-placement="top" title="Obě"><span class="icon-both"></span></button>'.
    222       '<button class="btn btn-filter cpohlavi btn-ico" onclick="upf(\'pohlavi\',1)" id="pohlavi1" data-toggle="tooltip" '.
    223       'data-placement="top" title="Muži"><span class="icon-man"></span></button>'.
    224       '<button class="btn btn-filter cpohlavi btn-ico" onclick="upf(\'pohlavi\',2)" id="pohlavi2" data-toggle="tooltip" '.
    225       'data-placement="top" title="Ženy"><span class="icon-woman"></span></button>'.
    226       '</div> ';
    227     $Output .= '<div class="filter-num-box">'.
    228       '<div class="label-box">Jméno</div>'.
    229       '<input value="'.$_SESSION['name'].'" onkeyup="if(event.keyCode!=9) upf(\'name\',$(this).val(),(event.keyCode==13?0:1)); '.
    230       '" id="name" autocomplete="off" type="text"/>'.
    231       '</div> ';
    232     $Output .= '<div class="filter-num-box">'.
    233       '<div class="label-box">Věk</div>'.
    234       '<input value="'.$_SESSION['vekod'].'" onkeyup="if(event.keyCode!=9) upf(\'vekod\',$(this).val(),(event.keyCode==13?0:1)); '.
    235       '" id="vekod" autocomplete="off" type="text"/>'.
    236       '<div class="label-box">-</div>'.
    237       '<input value="'.$_SESSION['vekdo'].'" onkeyup="'.
    238       'if(event.keyCode!=9) upf(\'vekdo\',$(this).val(),(event.keyCode==13?0:1));" '.
    239       'id="vekdo" autocomplete="off" type="text"/>'.
    240       '<div class="label-box">let</div>'.
    241       '</div> ';
    242     $Output .= '<div class="filter-num-box">'.
    243       '<div class="label-box">Výška</div>'.
    244       '<input value="'.$_SESSION['vyskaod'].'" onkeyup="if(event.keyCode!=9) upf(\'vyskaod\',$(this).val(),(event.keyCode==13?0:1)); '.
    245       '" id="vyskaod" autocomplete="off" type="text"/>'.
    246       '<div class="label-box">-</div>'.
    247       '<input value="'.$_SESSION['vyskado'].'" onkeyup="'.
    248       'if(event.keyCode!=9) upf(\'vyskado\',$(this).val(),(event.keyCode==13?0:1));" '.
    249       'id="vyskado" autocomplete="off" type="text"/>'.
    250       '<div class="label-box">cm</div>'.
    251       '</div> ';
    252     $Output .= '<div class="filter-num-box">'.
    253       '<div class="label-box">Váha</div>'.
    254       '<input value="'.$_SESSION['vahaod'].'" onkeyup="if(event.keyCode!=9) upf(\'vahaod\',$(this).val(),(event.keyCode==13?0:1)); '.
    255       '" id="vahaod" autocomplete="off" type="text"/>'.
    256       '<div class="label-box">-</div>'.
    257       '<input value="'.$_SESSION['vahado'].'" onkeyup="'.
    258       'if(event.keyCode!=9) upf(\'vahado\',$(this).val(),(event.keyCode==13?0:1));" '.
    259       'id="vahado" autocomplete="off" type="text"/>'.
    260       '<div class="label-box">Kg</div>'.
    261       '</div> ';
    262     $Output .= '<div class="filter-num-box">'.
    263       '<div class="label-box">Umístění</div>'.
    264       '<input value="'.$_SESSION['location'].'" onkeyup="if(event.keyCode!=9) upf(\'location\',$(this).val(),(event.keyCode==13?0:1)); '.
    265       '" id="location" autocomplete="off" type="text"/>'.
    266       '</div> ';
    267     $Output .= '<div class="filter-num-box">'.
    268       '<div class="label-box">Zpráva</div>'.
    269       '<input value="'.$_SESSION['message'].'" onkeyup="if(event.keyCode!=9) upf(\'message\',$(this).val(),(event.keyCode==13?0:1)); '.
    270       '" id="message" autocomplete="off" type="text"/>'.
    271       '</div> ';
    272     }
    273 
    274     $Where = '';
    275     if (array_key_exists('name', $_SESSION) and ($_SESSION['name'] != '')) $Where .= ' AND (Name LIKE "%'.$this->Database->real_escape_string($_SESSION['name']).'%")';
    276     if (array_key_exists('location', $_SESSION) and ($_SESSION['location'] != '')) $Where .= ' AND (Location LIKE "%'.$this->Database->real_escape_string($_SESSION['location']).'%")';
    277     if (array_key_exists('message', $_SESSION) and ($_SESSION['message'] != '')) $Where .= ' AND (Message LIKE "%'.$this->Database->real_escape_string($_SESSION['message']).'%")';
    278     if (array_key_exists('vekod', $_SESSION) and ($_SESSION['vekod'] != '')) $Where .= ' AND (Age >= '.$this->Database->real_escape_string($_SESSION['vekod']).')';
    279     if (array_key_exists('vekdo', $_SESSION) and ($_SESSION['vekdo'] != '')) $Where .= ' AND (Age <= '.$this->Database->real_escape_string($_SESSION['vekdo']).')';
    280     if (array_key_exists('vyskaod', $_SESSION) and ($_SESSION['vyskaod'] != '')) $Where .= ' AND (Height >= '.$this->Database->real_escape_string($_SESSION['vyskaod']).')';
    281     if (array_key_exists('vyskado', $_SESSION) and ($_SESSION['vyskado'] != '')) $Where .= ' AND (Height <= '.$this->Database->real_escape_string($_SESSION['vyskado']).')';
    282     if (array_key_exists('vahaod', $_SESSION) and ($_SESSION['vahaod'] != '')) $Where .= ' AND (Weight >= '.$this->Database->real_escape_string($_SESSION['vahaod']).')';
    283     if (array_key_exists('vahado', $_SESSION) and ($_SESSION['vahado'] != '')) $Where .= ' AND (Weight <= '.$this->Database->real_escape_string($_SESSION['vahado']).')';
    284     if (array_key_exists('pohlavi', $_SESSION) and ($_SESSION['pohlavi'] != '')) $Where .= ' AND (Gender = '.$this->Database->real_escape_string($_SESSION['pohlavi']).')';
    285     if (substr($Where, 0, 4) == ' AND') $Where = substr($Where, 4);
    286     if ($Where == '') $Where = '1';
    287 
    288     $DbResult = $this->Database->query('SELECT COUNT(*) FROM `MeetItem` WHERE '.$Where);
    289     $DbRow = $DbResult->fetch_row();
    290     $PageList = GetPageList($DbRow[0]);
    291 
    292     $Gender = array('', 'Muž', 'Žena');
    293     $Output .= '<div id="list_content">';
    294     $Output .= $PageList['Output'];
    295     $TableColumns = array(
    296       array('Name' => 'Time', 'Title' => 'Čas'),
    297       array('Name' => 'Name', 'Title' => 'Jméno'),
    298       array('Name' => 'Height', 'Title' => 'Výška'),
    299       array('Name' => 'Age', 'Title' => 'Věk'),
    300       array('Name' => 'Weight', 'Title' => 'Váha'),
    301       array('Name' => 'Location', 'Title' => 'Umístění'),
    302       array('Name' => 'Gender', 'Title' => 'Pohlaví'),
    303       array('Name' => 'Message', 'Title' => 'Zpráva'),
    304       array('Name' => 'Source', 'Title' => 'Import'),
    305       array('Name' => '', 'Title' => 'Detail'),
    306     );
    307     $Order = GetOrderTableHeader($TableColumns, 'Time', 1);
    308     $Output .= '<table class="WideTable">';
    309     $Output .= $Order['Output'];
    310     $DbResult = $this->Database->select('MeetItem', '*, (SELECT MeetSource.Name FROM MeetSource WHERE MeetSource.Id = MeetItem.Source) AS SourceName, '.
    311       '(SELECT MeetSource.URL FROM MeetSource WHERE MeetSource.Id = MeetItem.Source) AS SourceURL', $Where.$Order['SQL'].$PageList['SQLLimit']);
    312     while($MeetItem = $DbResult->fetch_assoc())
    313     {
    314       $Output .= '<tr>'.
    315         '<td>'.HumanDate(MysqlDateToTime($MeetItem['Time'])).'</td>'.
    316         '<td>'.$MeetItem['Name'].'</td>'.
    317         '<td>'.$MeetItem['Height'].'</td>'.
    318         '<td>'.$MeetItem['Age'].'</td>'.
    319         '<td>'.$MeetItem['Weight'].'</td>'.
    320         '<td>'.$MeetItem['Location'].'</td>'.
    321         //'<td>'.$MeetItem['Email'].'</td>'.
    322         //'<td>'.$MeetItem['Phone'].'</td>'.
    323         '<td>'.$Gender[$MeetItem['Gender']].'</td>'.
    324         '<td>'.$MeetItem['Message'].'</td>'.
    325         '<td><a href="'.$MeetItem['SourceURL'].'">'.$MeetItem['SourceName'].'</a></td>'.
    326         '<td><a href="'.$this->Link('/seznamka/inzerat/'.$MeetItem['Id']).'">Ukázat</a></td>';
    327       $Output .= '</tr>';
    328     }
    329     $Output .= '</table>';
    330     $Output .= $PageList['Output'];
    331     $Output .= '</div>';
    332     if (array_key_exists('lvm', $_GET) and ($_GET['lvm'] == 'seznam'))
    333     {
    334     }
    335     else
    336     {
    337       $Output .= '<div><a href="'.$this->Link('/seznamka/rss/').'"><img src="'.$this->Link('/images/rss20.png').'" alt="rss20"/></a></div>';
    338     }
    339 
    340     return($Output);
    341   }
    342 
    343   function ShowMeetItem()
    344   {
    345     $this->Title = 'Inzerát - Seznamka - '.$this->Title;
    346     $Output = '';
    347     if(count($this->PathItems) > 2)
    348     {
    349       $id = $this->PathItems[2] * 1;
    350     } else return 'Položka nenalezena';
    351     $Output .= '<div class="title">Inzerát</div>';
    352     $Gender = array('', 'Muž', 'Žena');
    353     $DbResult = $this->Database->select('MeetItem', '*, (SELECT MeetSource.Name FROM MeetSource WHERE MeetSource.Id = MeetItem.Source) AS SourceName, '.
    354       '(SELECT MeetSource.URL FROM MeetSource WHERE MeetSource.Id = MeetItem.Source) AS SourceURL', 'Id='.$id);
    355     if ($DbResult->num_rows > 0)
    356     {
    357       $MeetItem = $DbResult->fetch_assoc();
    358       if ($MeetItem['Link'] != '') $Link = '<a href="'.$MeetItem['Link'].'">Odkaz</a>';
    359         else $Link = '';
    360       $Output .= '<table class="ItemTable">'.
    361         '<tr><th>Čas</th><td>'.HumanDate(MysqlDateToTime($MeetItem['Time'])).'</td></tr>'.
    362         '<tr><th>Pohlaví</th><td>'.$Gender[$MeetItem['Gender']].'</td></tr>'.
    363         '<tr><th>Jméno</th><td>'.$MeetItem['Name'].'</td></tr>'.
    364         '<tr><th>Výška</th><td>'.$MeetItem['Height'].'</td></tr>'.
    365         '<tr><th>Věk</th><td>'.$MeetItem['Age'].'</td></tr>'.
    366         '<tr><th>Váha</th><td>'.$MeetItem['Weight'].'</td></tr>'.
    367         '<tr><th>Umístění</th><td>'.$MeetItem['Location'].'</td></tr>'.
    368         '<tr><th>Email</th><td>'.$MeetItem['Email'].'</td></tr>'.
    369         '<tr><th>Telefón</th><td>'.$MeetItem['Phone'].'</td></tr>'.
    370         '<tr><th>Zpráva</th><td>'.$MeetItem['Message'].'</td></tr>'.
    371         '<tr><th>Původní web</th><td>'.$Link.'</td></tr>'.
    372         '<tr><th>Zdroj importu</th><td><a href="'.$MeetItem['SourceURL'].'">'.$MeetItem['SourceName'].'</a></td></tr>';
    373       $Output .= '</table>';
    374     } else $Output .= 'Položka nenalezena';
    375     return $Output;
    376   }
    377 
    378   function ShowMeetListRss()
    379   {
    380     global $Config;
    381 
    382     $this->NoFullPage = true;
    383     $RSS = new RSS();
    384     $RSS->Title = 'Taneční seznamka';
    385     $RSS->Description = '';
    386     $RSS->Link = $this->AbsoluteLink('/seznamka/');
    387 
    388     $DbResult = $this->Database->select('MeetItem', '*, (SELECT MeetSource.Name FROM MeetSource WHERE MeetSource.Id = MeetItem.Source) AS SourceName, '.
    389       '(SELECT MeetSource.URL FROM MeetSource WHERE MeetSource.Id = MeetItem.Source) AS SourceURL', '1 ORDER BY `Time` DESC LIMIT 30');
    390     while($MeetItem = $DbResult->fetch_assoc())
    391     {
    392       $Title = $MeetItem['Name'];
    393       if ($MeetItem['Age'] != '') $Title .= ', '.$MeetItem['Age'].' let';
    394       if ($MeetItem['Weight'] != '') $Title .= ', '.$MeetItem['Height'].' cm';
    395       if ($MeetItem['Location'] != '') $Title .= ', '.$MeetItem['Location'];
    396       $Description = $MeetItem['Message']."<br/>\n";
    397       if ($MeetItem['Email'] != '') $Description .= '<br/>Email: '.$MeetItem['Email'];
    398       if ($MeetItem['Phone'] != '') $Description .= '<br/>Telefon: '.$MeetItem['Phone'];
    399       if ($MeetItem['Age'] != '') $Description .= '<br/>Věk: '.$MeetItem['Age'].' let';
    400       if ($MeetItem['Height'] != '') $Description .= '<br/>Výška: '.$MeetItem['Height'].' cm';
    401       if ($MeetItem['Weight'] != '') $Description .= '<br/>Váha: '.$MeetItem['Weight'].' kg';
    402       $Description .= '<br/>Zdroj importu: <a href="'.$MeetItem['SourceURL'].'">'.$MeetItem['SourceName'].'</a>';
    403       $Time = MysqlDateTimeToTime($MeetItem['Time']);
    404       $TimeImport = MysqlDateTimeToTime($MeetItem['TimeImport']);
    405       // Append time part of TimeImport time to item time so new items will appear in correct time order even if item doesn't have time part specified
    406       if (TimeToMysqlTime($Time) == '00:00:00')
    407       {
    408         $Time = MysqlDateTimeToTime(TimeToMysqlDate($Time).' '.TimeToMysqlTime($TimeImport));
    409       }
    410       $RSS->Items[] = array(
    411         'Title' => $Title,
    412         'Description' => $Description,
    413         'Time' => $Time,
    414         'Link' => $this->AbsoluteLink('/seznamka/inzerat/'.$MeetItem['Id'].'/'),
    415       );
    416     }
    417 
    418     return $RSS->Generate();
    419   }
    420 
    421   function ShowPage($Content)
     72 
     73  function GetOutput($Content)
    42274  {
    42375    global $Config;
     
    42981      '<link rel="stylesheet" href="'.$this->Link('/style.css').'" type="text/css" media="all" />'.
    43082      '<meta http-equiv="content-type" content="application/xhtml+xml; charset='.$this->Config['Encoding'].'" />'.
    431       '<meta name="viewport" content="width=device-width, initial-scale=1">'.
    43283      '<script type="text/javascript" src="'.$this->Link('/jquery.js').'"></script>';
    43384    $Output .= '<link rel="alternate" title="Taneční seznamka" href="'.
     
    44091    $Output .= '</body></html>';
    44192    return($Output);
    442   }
    443 
    444   function ShowRobots()
    445   {
    446     $this->NoFullPage = true;
     93  } 
     94
     95  function RegisterPage($Path, $Handler)
     96  {
     97    if(is_array($Path))
     98    {
     99      $Page = &$this->Pages;
     100      $LastKey = array_pop($Path);
     101      foreach($Path as $PathItem)
     102      {
     103        $Page = &$Page[$PathItem];
     104      }
     105      if(!is_array($Page)) $Page = array('' => $Page);
     106      $Page[$LastKey] = $Handler;
     107    } else $this->Pages[$Path] = $Handler;
     108  }
     109
     110  function RegisterMenuItem($Link, $Title)
     111  {
     112     $this->MainMenu[] = array('Link' => $Link, 'Title' => $Title);
     113  }
     114
     115  function RegisterPageHeader($Name, $Callback)
     116  {
     117    $this->PageHeaders[$Name] = $Callback;
     118  }
     119
     120  function RegisterPageBar($Name)
     121  {
     122    $this->Bars[$Name] = array();
     123  }
     124
     125  function UnregisterPageBar($Name)
     126  {
     127    unset($this->Bars[$Name]);
     128  }
     129
     130  function SearchPage($PathItems, $Pages)
     131  {
     132    if(count($PathItems) > 0) $PathItem = $PathItems[0];
     133      else $PathItem = '';
     134    if(array_key_exists($PathItem, $Pages))
     135    {
     136      if(is_array($Pages[$PathItem]))
     137      {
     138        array_shift($PathItems);
     139        return($this->SearchPage($PathItems, $Pages[$PathItem]));
     140      } else return($Pages[$PathItem]);
     141    } else return('');
     142  }
     143
     144  function PageNotFound()
     145  {
     146    return('Page '.implode('/', $this->PathItems).' not found.');
     147  }
     148
     149  function ShowPage()
     150  {
     151    $this->BaseView = new BaseView($this);
     152
     153    /* @var $Page Page */
     154    $ClassName = $this->SearchPage($this->PathItems, $this->Pages);
     155    if($ClassName != '')
     156    {
     157      $Page = new $ClassName($this);
     158    } else {
     159      $Page = new PageMissing($this);
     160    }
     161    echo($this->BaseView->GetOutput($Page));
     162  }
     163
     164  function Run()
     165  {
     166    $this->RunCommon();
     167    if($this->ShowPage)
     168    {
     169      $this->PathItems = ProcessURL();
     170      $this->ShowPage();
     171    }
     172  }
     173 
     174  function RunCommon()
     175  {
     176    global $Config;
     177
     178    $this->Config = $Config;
     179    $this->Database = new Database();
     180    $this->Database->Connect($this->Config['Database']['Host'], $this->Config['Database']['User'],
     181      $this->Config['Database']['Password'], $this->Config['Database']['Database']);
     182    $this->Database->Prefix = $this->Config['Database']['Prefix'];
     183    $this->Database->charset($this->Config['Database']['Charset']);
     184    $this->Database->ShowSQLError = false;
     185    $this->Database->ShowSQLQuery = false;
     186    $this->PathItems = $this->ProcessURL();
     187
     188    $this->RegisterPageBar('Top');
     189    $this->Title = 'Tanec';
     190    $Output = '';
     191  }
     192}
     193
     194class PageMissing extends Page
     195{
     196  var $FullTitle = 'Stránka nenalezena';
     197  var $ShortTitle = 'Stránka nenalezena';
     198
     199  function __construct($System)
     200  {
     201    parent::__construct($System);
     202    $this->ParentClass = 'PagePortal';
     203  }
     204
     205  function Show()
     206  {
     207    Header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
     208    return('<h3 align="center">Požadovaná stránka neexistuje.</h3>');
     209  }
     210}
     211
     212class PageRobots extends Page
     213{
     214  function __construct($System)
     215  {
     216    parent::__construct($System);
     217  }
     218
     219  function Show()
     220  {
     221    $this->ClearPage = true;
    447222    $Result = 'User-agent: *'."\n".
    448       'Disallow: /*?*'."\n".
    449       'Sitemap: '.$this->AbsoluteLink('/sitemap.xml');
     223      'Disallow: /*?'."\n".
     224      'Sitemap: '.$this->System->AbsoluteLink('/sitemap.xml');
    450225    return($Result);
    451226  }
    452 
    453   function ShowSiteMap()
    454   {
    455     $this->NoFullPage = true;
     227}
     228
     229class PageSiteMap extends Page
     230{
     231  function Show()
     232  {
     233    $this->ClearPage = true;
    456234    $Urls = array(
    457235      '/seznamka/',
     
    465243    {
    466244      $Result .= '<url>'."\n".
    467         '  <loc>'.$this->AbsoluteLink($Url).'</loc>'."\n".
     245        '  <loc>'.$this->System->AbsoluteLink($Url).'</loc>'."\n".
    468246        //'<lastmod>'..'</lastmod>'."\n".
    469247        '</url>'."\n";
     
    476254      $Time = MysqlDateTimeToTime($DbRow['Time']);
    477255      $Result .= '<url>'."\n".
    478         '  <loc>'.$this->AbsoluteLink($Url).'</loc>'."\n".
     256        '  <loc>'.$this->System->AbsoluteLink($Url).'</loc>'."\n".
    479257        '  <lastmod>'.date('c', $Time).'</lastmod>'."\n".
    480258        '</url>'."\n";
     
    484262    return($Result);
    485263  }
    486 
    487   function Run()
    488   {
    489     global $Config;
    490 
    491     $this->Config = $Config;
    492     $this->Database = new Database();
    493     $this->Database->Connect($this->Config['Database']['Host'], $this->Config['Database']['User'],
    494       $this->Config['Database']['Password'], $this->Config['Database']['Database']);
    495     $this->Database->Prefix = $this->Config['Database']['Prefix'];
    496     $this->Database->charset($this->Config['Database']['Charset']);
    497     $this->Database->ShowSQLError = false;
    498     $this->Database->ShowSQLQuery = false;
    499     $this->PathItems = $this->ProcessURL();
    500 
    501     $this->Title = 'Tanec';
    502     $Output = '';
    503 
    504     if(count($this->PathItems) > 0)
    505     {
    506       if($this->PathItems[0] == 'robots.txt') $Output .= $this->ShowRobots();
    507       else if($this->PathItems[0] == 'sitemap.xml') $Output .= $this->ShowSiteMap();
    508       else if($this->PathItems[0] == 'skoly') $Output .= $this->ShowSchoolList();
    509       else if($this->PathItems[0] == 'tance') $Output .= $this->ShowDanceList();
    510       else if($this->PathItems[0] == 'filmy') $Output .= $this->ShowMovieList();
    511       else if($this->PathItems[0] == 'seznamka') {
    512         if(count($this->PathItems) > 1)
    513         {
    514           if($this->PathItems[1] == 'rss') $Output .= $this->ShowMeetListRss();
    515           else if($this->PathItems[1] == 'aktualizace') $Output .= $this->ShowMeetUpdate();
    516           else if($this->PathItems[1] == 'inzerat') $Output .= $this->ShowMeetItem();
    517         } else $Output .= $this->ShowMeetList();
    518       }
    519       else $Output .= $this->ShowDanceList();
    520     } else $Output .= $this->ShowDanceList();
    521     if (!$this->NoFullPage)
    522     {
    523       $Output = $this->ShowMenu().$Output;
    524       echo($this->ShowPage($Output));
    525     } else echo($Output);
    526   }
    527 }
    528 
    529 $Application = new MyApplication();
     264}
     265
     266
     267$Revision = 36; // Subversion revision
     268$DatabaseRevision = 36; // SQL structure revision
     269$ReleaseTime = strtotime('2019-05-05');
     270
     271$Application = new ApplicationTanec();
     272$Application->ModuleManager->LoadModulesFromDir(dirname(__FILE__).'/Modules');
     273$Application->Modules = $Application->ModuleManager->Modules;
     274$Application->ModuleManager->InstallAll();
     275$Application->ModuleManager->StartAll();
     276$Application->RegisterPage('', 'PageDanceList');
     277$Application->RegisterPage('robots.txt', 'PageRobots');
     278$Application->RegisterPage('sitemap.xml', 'PageSiteMap');
    530279$Application->Run();
  • trunk/style/default/style.css

    r36 r37  
    104104  color: black;
    105105}
    106 .footer
     106.Footer
    107107{
    108108  padding-top: 10pt;
Note: See TracChangeset for help on using the changeset viewer.