Changeset 619


Ignore:
Timestamp:
Dec 26, 2013, 7:37:44 PM (11 years ago)
Author:
chronos
Message:
  • Přidáno: Volba pro trvalé přihlášení uživatele.
  • Opraveno: Ošetření chyb v SQL dotazech při povýšení verze databáze.
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Application/Version.php

    r616 r619  
    11<?php
    22
    3 $Revision = 616; // Subversion revision
    4 $DatabaseRevision = 615; // SQL structure revision
    5 $ReleaseTime = '2013-12-22';
     3$Revision = 619; // Subversion revision
     4$DatabaseRevision = 619; // SQL structure revision
     5$ReleaseTime = '2013-12-26';
  • trunk/Common/Setup/Setup.php

    r613 r619  
    9797        {
    9898          $Output .= '<h3>Povýšení</h3>';
    99           $Output .= $this->System->Setup->Upgrade();
    100           $Output .= $this->ControlPanel();
     99          try {   
     100            $Output .= $this->System->Setup->Upgrade();
     101          } catch (Exception $E) {
     102                  $Output .= $this->SystemMessage('Chyba aktualizace', 'Došlo k chybě v SQL dotazu při aktualizaci: <br/>'.$E->getMessage());
     103            }
     104                $Output .= $this->ControlPanel();
    101105        } else
    102106        if($Action == 'install')
  • trunk/Common/Setup/Update.php

    r612 r619  
    4949            echo($Output);
    5050            $Output = '';
    51             $RevUpdate = $TraceItem['Function'];         
    52             $RevUpdate($this);
    53             $DbRevision = $TraceItem['Revision'];
     51            $RevUpdate = $TraceItem['Function'];
     52      $RevUpdate($this);
     53            $DbRevision = $TraceItem['Revision'];
    5454            $this->Database->query('UPDATE `'.$this->VersionTable.'` SET `Revision`= '.$TraceItem['Revision'].' WHERE `Id`=1');
    5555          }
  • trunk/Common/Setup/Updates.php

    r615 r619  
    523523}
    524524
     525function UpdateTo619($Manager)
     526{
     527  $Manager->Execute('ALTER TABLE `UserOnline` ADD `StayLogged` INT NOT NULL ;');
     528}
     529
    525530class Updates
    526531{
     
    554559      597 => array('Revision' => 601, 'Function' => 'UpdateTo601'),
    555560      601 => array('Revision' => 615, 'Function' => 'UpdateTo615'),
     561      615 => array('Revision' => 619, 'Function' => 'UpdateTo619'),
    556562    ));
    557563  }
  • trunk/Modules/Network/Network.php

    r615 r619  
    156156    ));
    157157    $this->System->FormManager->RegisterClass('NetworkDomainAlias', array(
    158         'Title' => 'Alias domény',
    159         'Table' => 'NetworkDomainAlias',
    160         'Items' => array(
    161             'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    162             'Target' => array('Type' => 'String', 'Caption' => 'Cíl', 'Default' => ''),
    163             'Comment' => array('Type' => 'String', 'Caption' => 'Komentář', 'Default' => ''),
    164         ),
     158      'Title' => 'Alias domény',
     159      'Table' => 'NetworkDomainAlias',
     160      'Items' => array(
     161        'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
     162        'Target' => array('Type' => 'String', 'Caption' => 'Cíl', 'Default' => ''),
     163        'Comment' => array('Type' => 'String', 'Caption' => 'Komentář', 'Default' => ''),
     164      ),
    165165    ));
    166166    $this->System->FormManager->RegisterClass('NetworkDevice', array(
    167         'Title' => 'Síťové zařízení',
    168         'Table' => 'NetworkDevice',
    169         'Items' => array(
    170             'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    171             'Type' => array('Type' => 'TNetworkDeviceType', 'Caption' => 'Typ', 'Default' => '0'),
    172             'Member' => array('Type' => 'TMember', 'Caption' => 'Zákazník', 'Default' => '0'),
    173             'Location' => array('Type' => 'TMember', 'Caption' => 'Umístění', 'Default' => '0'),
    174             'Service' => array('Type' => 'TServiceCustomerRel', 'Caption' => 'Služba', 'Default' => '', 'Null' => true),
    175             'Used' => array('Type' => 'Boolean', 'Caption' => 'Použito', 'Default' => '1'),
    176             'Online' => array('Type' => 'Boolean', 'Caption' => 'Běží', 'Default' => '0', 'ReadOnly' => true),
    177             'LastOnline' => array('Type' => 'DateTime', 'Caption' => 'Naposledy běželo', 'Default' => '', 'ReadOnly' => true),
    178             'PermanentOnline' => array('Type' => 'Boolean', 'Caption' => 'Běží stále', 'Default' => '0'),
    179             'Interfaces' => array('Type' => 'TInterfaceList', 'Caption' => 'Rozhraní', 'Default' => ''),
    180             'MapPosition' => array('Type' => 'TMapPosition', 'Caption' => 'Pozice na mapě', 'Default' => '0', 'Null' => true),
    181             'LoginName' => array('Type' => 'String', 'Caption' => 'Přihlašovací jméno', 'Default' => '', 'Null' => true),
    182             'LoginPassword' => array('Type' => 'String', 'Caption' => 'Přihlašovací heslo', 'Default' => '', 'Null' => true),
    183         ),
    184         'Actions' => array(
    185             array('Caption' => 'Dostupnost zařízení', 'URL' => '/network/availability/'),
    186         ),
     167      'Title' => 'Síťové zařízení',
     168      'Table' => 'NetworkDevice',
     169      'Items' => array(
     170        'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
     171        'Type' => array('Type' => 'TNetworkDeviceType', 'Caption' => 'Typ', 'Default' => '0'),
     172        'Member' => array('Type' => 'TMember', 'Caption' => 'Zákazník', 'Default' => '0'),
     173        'Location' => array('Type' => 'TMember', 'Caption' => 'Umístění', 'Default' => '0'),
     174        'Service' => array('Type' => 'TServiceCustomerRel', 'Caption' => 'Služba', 'Default' => '', 'Null' => true),
     175        'Used' => array('Type' => 'Boolean', 'Caption' => 'Použito', 'Default' => '1'),
     176        'Online' => array('Type' => 'Boolean', 'Caption' => 'Běží', 'Default' => '0', 'ReadOnly' => true),
     177        'LastOnline' => array('Type' => 'DateTime', 'Caption' => 'Naposledy běželo', 'Default' => '', 'ReadOnly' => true),
     178        'PermanentOnline' => array('Type' => 'Boolean', 'Caption' => 'Běží stále', 'Default' => '0'),
     179        'Interfaces' => array('Type' => 'TInterfaceList', 'Caption' => 'Rozhraní', 'Default' => ''),
     180        'MapPosition' => array('Type' => 'TMapPosition', 'Caption' => 'Pozice na mapě', 'Default' => '0', 'Null' => true),
     181        'LoginName' => array('Type' => 'String', 'Caption' => 'Přihlašovací jméno', 'Default' => '', 'Null' => true),
     182        'LoginPassword' => array('Type' => 'String', 'Caption' => 'Přihlašovací heslo', 'Default' => '', 'Null' => true),
     183      ),
     184      'Actions' => array(
     185        array('Caption' => 'Dostupnost zařízení', 'URL' => '/network/availability/'),
     186      ),
    187187    ));
    188188    $this->System->FormManager->RegisterClass('NetworkDeviceType', array(
    189         'Title' => 'Typ síťového zařízení',
    190         'Table' => 'NetworkDeviceType',
    191         'Items' => array(
    192             'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    193             'ShowOnline' => array('Type' => 'Boolean', 'Caption' => 'Ukázat online', 'Default' => '0'),
    194             'IconName' => array('Type' => 'String', 'Caption' => 'Jméno ikony', 'Default' => '0'),
    195         ),
     189      'Title' => 'Typ síťového zařízení',
     190      'Table' => 'NetworkDeviceType',
     191      'Items' => array(
     192        'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
     193        'ShowOnline' => array('Type' => 'Boolean', 'Caption' => 'Ukázat online', 'Default' => '0'),
     194        'IconName' => array('Type' => 'String', 'Caption' => 'Jméno ikony', 'Default' => '0'),
     195      ),
    196196    ));
    197197    $this->System->FormManager->RegisterClass('NetworkInterface', array(
    198         'Title' => 'Síťové rozhraní',
    199         'Table' => 'NetworkInterface',
    200         'Items' => array(
    201             'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    202             'Type' => array('Type' => 'TNetworkInterfaceType', 'Caption' => 'Typ', 'Default' => '0'),
    203             'MAC' => array('Type' => 'MacAddress', 'Caption' => 'Fyzická adresa (MAC)', 'Default' => ''),
    204             'LocalIP' => array('Type' => 'IPv4Address', 'Caption' => 'IPv4', 'Default' => ''),
    205             'IPv6' => array('Type' => 'IPv6Address', 'Caption' => 'IPv6', 'Default' => '', 'Null' => true),
    206             'ExternalIP' => array('Type' => 'IPv4Address', 'Caption' => 'Veřejná IPv4', 'Default' => '', 'Null' => true),
    207             'Device' => array('Type' => 'TNetworkDevice', 'Caption' => 'Zařízení', 'Default' => ''),
    208             'Online' => array('Type' => 'Boolean', 'Caption' => 'Běží', 'Default' => '0', 'ReadOnly' => true),
    209             'LastOnline' => array('Type' => 'DateTime', 'Caption' => 'Naposledy běželo', 'Default' => '', 'ReadOnly' => true),
    210             'Links1' => array('Type' => 'TNetworkLinkListInterface1', 'Caption' => 'Propojení 1', 'Default' => ''),
    211             'Links2' => array('Type' => 'TNetworkLinkListInterface2', 'Caption' => 'Propojení 2', 'Default' => ''),
    212         ),
     198      'Title' => 'Síťové rozhraní',
     199      'Table' => 'NetworkInterface',
     200      'Items' => array(
     201        'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
     202        'Type' => array('Type' => 'TNetworkInterfaceType', 'Caption' => 'Typ', 'Default' => '0'),
     203        'MAC' => array('Type' => 'MacAddress', 'Caption' => 'Fyzická adresa (MAC)', 'Default' => ''),
     204        'LocalIP' => array('Type' => 'IPv4Address', 'Caption' => 'IPv4', 'Default' => ''),
     205        'IPv6' => array('Type' => 'IPv6Address', 'Caption' => 'IPv6', 'Default' => '', 'Null' => true),
     206        'ExternalIP' => array('Type' => 'IPv4Address', 'Caption' => 'Veřejná IPv4', 'Default' => '', 'Null' => true),
     207        'Device' => array('Type' => 'TNetworkDevice', 'Caption' => 'Zařízení', 'Default' => ''),
     208        'Online' => array('Type' => 'Boolean', 'Caption' => 'Běží', 'Default' => '0', 'ReadOnly' => true),
     209        'LastOnline' => array('Type' => 'DateTime', 'Caption' => 'Naposledy běželo', 'Default' => '', 'ReadOnly' => true),
     210        'Links1' => array('Type' => 'TNetworkLinkListInterface1', 'Caption' => 'Propojení 1', 'Default' => ''),
     211        'Links2' => array('Type' => 'TNetworkLinkListInterface2', 'Caption' => 'Propojení 2', 'Default' => ''),
     212      ),
    213213    ));
    214214    $this->System->FormManager->RegisterClass('NetworkInterfaceType', array(
    215         'Title' => 'Typ síťového rozhraní',
    216         'Table' => 'NetworkInterfaceType',
    217         'Items' => array(
    218             'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    219             'MaxSpeed' => array('Type' => 'Integer', 'Caption' => 'Max. rychlost', 'Default' => '0', 'Suffix' => 'Mbit/s'),
    220             'FullDuplex' => array('Type' => 'Boolean', 'Caption' => 'Plně duplexní', 'Default' => '0'),
    221             'Color' => array('Type' => 'Color', 'Caption' => 'Barva', 'Default' => '0'),
    222         ),
     215      'Title' => 'Typ síťového rozhraní',
     216      'Table' => 'NetworkInterfaceType',
     217      'Items' => array(
     218        'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
     219        'MaxSpeed' => array('Type' => 'Integer', 'Caption' => 'Max. rychlost', 'Default' => '0', 'Suffix' => 'Mbit/s'),
     220        'FullDuplex' => array('Type' => 'Boolean', 'Caption' => 'Plně duplexní', 'Default' => '0'),
     221        'Color' => array('Type' => 'Color', 'Caption' => 'Barva', 'Default' => '0'),
     222      ),
    223223    ));
    224224    $this->System->FormManager->RegisterClass('NetworkSubnet', array(
    225         'Title' => 'Podsítě',
    226         'DefaultSortColumn' => 'Name',
    227         'Table' => 'NetworkSubnet',
    228         'Items' => array(
    229             'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    230             'AddressRange' => array('Type' => 'String', 'Caption' => 'Rozsah adres', 'Default' => ''),
    231             'Mask' => array('Type' => 'Integer', 'Caption' => 'Prefix', 'Default' => ''),
    232             'DHCP' => array('Type' => 'IPv4Address', 'Caption' => 'DHCP', 'Default' => ''),
    233             'Gateway' => array('Type' => 'IPv4Address', 'Caption' => 'Brána', 'Default' => ''),
    234             'WINS' => array('Type' => 'IPv4Address', 'Caption' => 'WINS', 'Default' => ''),
    235             'DNS' => array('Type' => 'String', 'Caption' => 'DNS', 'Default' => ''),
    236             'Domain' => array('Type' => 'String', 'Caption' => 'Doména', 'Default' => ''),
    237             'NTP' => array('Type' => 'String', 'Caption' => 'NTP', 'Default' => ''),
    238             'Member' => array('Type' => 'TMember', 'Caption' => 'Zákazník', 'Default' => '', 'Null' => true),
    239             'ExtAddressRange' => array('Type' => 'String', 'Caption' => 'Vnější rozsah adres', 'Default' => ''),
    240             'ExtMask' => array('Type' => 'String', 'Caption' => 'Vnější prefix', 'Default' => ''),
    241             'AddressRangeIPv6' => array('Type' => 'String', 'Caption' => 'Rozsah adres IPv6', 'Default' => ''),
    242             'Configure' => array('Type' => 'Boolean', 'Caption' => 'Nastavovat', 'Default' => ''),
    243         ),
     225      'Title' => 'Podsítě',
     226      'DefaultSortColumn' => 'Name',
     227      'Table' => 'NetworkSubnet',
     228      'Items' => array(
     229        'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
     230        'AddressRange' => array('Type' => 'String', 'Caption' => 'Rozsah adres', 'Default' => ''),
     231        'Mask' => array('Type' => 'Integer', 'Caption' => 'Prefix', 'Default' => ''),
     232        'DHCP' => array('Type' => 'IPv4Address', 'Caption' => 'DHCP', 'Default' => ''),
     233        'Gateway' => array('Type' => 'IPv4Address', 'Caption' => 'Brána', 'Default' => ''),
     234        'WINS' => array('Type' => 'IPv4Address', 'Caption' => 'WINS', 'Default' => ''),
     235        'DNS' => array('Type' => 'String', 'Caption' => 'DNS', 'Default' => ''),
     236        'Domain' => array('Type' => 'String', 'Caption' => 'Doména', 'Default' => ''),
     237        'NTP' => array('Type' => 'String', 'Caption' => 'NTP', 'Default' => ''),
     238        'Member' => array('Type' => 'TMember', 'Caption' => 'Zákazník', 'Default' => '', 'Null' => true),
     239        'ExtAddressRange' => array('Type' => 'String', 'Caption' => 'Vnější rozsah adres', 'Default' => ''),
     240        'ExtMask' => array('Type' => 'String', 'Caption' => 'Vnější prefix', 'Default' => ''),
     241        'AddressRangeIPv6' => array('Type' => 'String', 'Caption' => 'Rozsah adres IPv6', 'Default' => ''),
     242        'Configure' => array('Type' => 'Boolean', 'Caption' => 'Nastavovat', 'Default' => ''),
     243      ),
    244244    ));   
    245245    $this->System->FormManager->RegisterClass('NetworkLink', array(
  • trunk/Modules/Portal/Portal.php

    r599 r619  
    8686        'Username' => array('Type' => 'String', 'Caption' => 'Přihlašovací jméno', 'Default' => ''),
    8787        'Password' => array('Type' => 'Password', 'Caption' => 'Heslo', 'Default' => ''),
     88        'StayLogged' => array('Type' => 'Boolean', 'Caption' => 'Zůstat přihlášen', 'Default' => '0'),
    8889      ),
    8990    ));
     
    242243          $Form->SetClass('UserLogin');
    243244          $Form->OnSubmit = '?Action=Login';
    244           $Result = $this->System->User->Login($_POST['Username'], $_POST['Password']);
     245          if($_POST['StayLogged'] == 0) $StayLogged = true;
     246            else $StayLogged = false;         
     247          $Result = $this->System->User->Login($_POST['Username'], $_POST['Password'], $StayLogged);
    245248          $Output .= $this->SystemMessage('Přihlášení', $Result);
    246249          if($Result <> USER_LOGGED_IN)
  • trunk/Modules/User/User.php

    r605 r619  
    4242  function GetSalt()
    4343  {
    44     mt_srand(microtime(true)*100000 + memory_get_usage(true));
     44    mt_srand(microtime(true) * 100000 + memory_get_usage(true));
    4545    return sha1(uniqid(mt_rand(), true));
    4646  }
     
    5353  var $Roles = array();
    5454  var $User = array();
    55   var $OnlineStateTimeout = 600; // in seconds
     55  var $OnlineStateTimeout;
    5656  var $PermissionCache = array();
    5757  var $PermissionGroupCache = array();
     
    6363  {
    6464    parent::__construct($System);
     65    $this->OnlineStateTimeout = 600; // in seconds
    6566    $this->PasswordHash = new PasswordHash();
    6667  }
     
    8182
    8283    // Check login
    83     $Query = $this->Database->select('UserOnline', '*', 'SessionId="'.$SID.'"');
     84    $Query = $this->Database->select('UserOnline', '*', '`SessionId`="'.$SID.'"');
    8485    $Row = $Query->fetch_assoc();
    8586    if($Row['User'] != '')
    8687    {
    87       $Query = $this->Database->query('SELECT User.*, UserCustomerRel.Customer AS Member FROM User LEFT JOIN UserCustomerRel ON UserCustomerRel.User=User.Id WHERE User.Id='.$Row['User']);     
     88      $Query = $this->Database->query('SELECT `User`.*, `UserCustomerRel`.`Customer` AS `Member` FROM `User` '.
     89        ' LEFT JOIN `UserCustomerRel` ON `UserCustomerRel`.`User`=`User`.`Id` WHERE `User`.`Id`='.$Row['User']);     
    8890      $this->User = $Query->fetch_assoc();
    8991      $Result = USER_LOGGED;
     
    9698
    9799    // Remove nonactive users
    98     $DbResult = $this->Database->select('UserOnline', 'Id, User', 'ActivityTime < DATE_SUB(NOW(), INTERVAL '.$this->OnlineStateTimeout.' SECOND)');
     100    $DbResult = $this->Database->select('UserOnline', '`Id`, `User`', '(`ActivityTime` < DATE_SUB(NOW(), INTERVAL '.$this->OnlineStateTimeout.' SECOND)) AND (`StayLogged` = 0)');
    99101    while($DbRow = $DbResult->fetch_array())
    100102    {
     
    181183  }
    182184
    183   function Login($Login, $Password)
     185  function Login($Login, $Password, $StayLogged = false)
    184186  {
    185187    $SID = session_id();
     
    194196      {
    195197        $this->Database->update('User', 'Id='.$Row['Id'], array('LastLoginTime' => 'NOW()', 'LastIpAddress' => GetRemoteAddress()));           
    196         $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('User' => $Row['Id']));
     198        $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('User' => $Row['Id'], 'StayLogged' => $StayLogged));
    197199       
    198200        $Result = USER_LOGGED_IN;
Note: See TracChangeset for help on using the changeset viewer.