Changeset 712


Ignore:
Timestamp:
Jan 5, 2014, 4:28:51 PM (11 years ago)
Author:
chronos
Message:
  • Modified: Logged user state remade to use memory table to avoid offten writes to storage. Memory table lose their content if mysql server is restarted. So UserTrace still keep user information but table is only updated on login or logout. Login timeout is managed by UserOnline table.
  • Added: Ability to login permanently. Session will not timeout after short time. List of online users will be not affected as it use own timeout check.
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Modules/FrontPage/FrontPage.php

    r691 r712  
    3636                        if(array_key_exists('LoginUser', $_POST) and array_key_exists('LoginPass', $_POST))
    3737                        {
    38                                 $this->System->User->Login($_POST['LoginUser'], $_POST['LoginPass']);
     38                                if(array_key_exists('LoginUser', $_POST)) $StayLogged = true;
     39                                  else $StayLogged = false;
     40                                $this->System->User->Login($_POST['LoginUser'], $_POST['LoginPass'], $StayLogged);
    3941                                if($this->System->User->Role == LICENCE_ANONYMOUS)
    4042                                {
  • trunk/Modules/User/User.php

    r627 r712  
    1212                parent::__construct($System);
    1313                $this->Name = 'User';
    14                 $this->Version = '1.0';
     14                $this->Version = '1.1';
    1515                $this->Creator = 'Chronos';
    1616                $this->License = 'GNU/GPL';
     
    2626                $this->System->RegisterPage('registrace.php', 'PageUserRegistration');
    2727                $this->System->RegisterPage('user.php', 'PageUserProfile');
     28                $this->System->RegisterPage('login', 'PageUserLogin');
    2829                $this->System->RegisterMenuItem(array(
    2930        'Title' => T('Translators'),
     
    4142        {
    4243                $Output = T('Online translators').':<br />';
    43                 $DbResult = $this->System->Database->query('SELECT `Name`, `GM`, `User`.`ID` AS `ID` FROM `User` '.
    44                                 'LEFT JOIN `UserTrace` ON `UserTrace`.`User` = `User`.`Id` '.
    45                                 'WHERE (`LastLogin` >= NOW() - 300) AND ((`LastLogout` < `LastLogin`) OR (ISNULL(`LastLogout`)))');
     44                $DbResult = $this->System->Database->query('SELECT `User`.`Name`, `User`.`ID` FROM `UserOnline` '.
     45                                'LEFT JOIN `User` ON `User`.`ID` = `UserOnline`.`User` '.
     46                                'WHERE (`ActivityTime` >= NOW() - 300) ');
    4647                while($DbUser = $DbResult->fetch_assoc())
    4748                {
     
    5152                return($Output);
    5253        }       
     54}
     55
     56class PageUserLogin extends Page
     57{
     58        function Show()
     59        {
     60                $Output = '<form action="'.$this->System->Link('/?action=login').'" method="post">'.
     61                        '<fieldset><legend>'.T('Login').'</legend>                     
     62                        <table>
     63                        <tr>
     64                        <td>'.T('Name').':</td><td><input type="text" name="LoginUser" size="13" /></td>
     65                        </tr>
     66                        <tr>
     67                        <td>'.T('Password').':</td><td><input type="password" name="LoginPass" size="13" /></td>
     68                        </tr>
     69                        <tr>
     70                        <td>'.T('Stay logged').':</td><td><input type="checkbox" name="StayLogged" /></td>
     71                        </tr>
     72                        <tr>
     73                        <th><input type="submit" value="'.T('Do login').'" /></th>
     74                        </tr>
     75                        </table>
     76                        </fieldset></form>';
     77                        return($Output);
     78        }
    5379}
    5480
     
    6894  var $Language;
    6995  var $System;
     96  var $Database;
     97  var $OnlineStateTimeout;
    7098 
    7199  function __construct($System)
    72100  {
    73101    $this->System = &$System;
    74     if(isset($_SESSION)) $this->Restore();   
    75       else $this->SetAnonymous();
     102    $this->Database = &$System->Database;
     103    $this->OnlineStateTimeout = 600; // in seconds
     104    if(isset($_SESSION)) $this->Check();   
    76105  }
    77106 
    78107  function __destroy()
    79108  {
    80     if(isset($_SESSION)) $this->Store();
    81   }
    82  
    83   function Login($Name, $Password)
    84   {
    85     $DbResult = $this->System->Database->query('SELECT `ID` FROM `User` WHERE '.
     109  }
     110 
     111  function Login($Name, $Password, $StayLogged = false)
     112  {
     113        $SID = session_id();
     114    $DbResult = $this->Database->query('SELECT `ID` FROM `User` WHERE '.
    86115      'LOWER(`Name`) = LOWER("'.$Name.'") AND `Pass` = '.$this->CryptPasswordSQL('"'.$Password.'"', '`Salt`'));
    87116    if($DbResult->num_rows > 0)
    88117    {
    89118      $User = $DbResult->fetch_assoc();
    90       $this->Id = $User['ID'];     
    91       $this->Load();
    92       $this->System->ModuleManager->Modules['Log']->WriteLog('Login: '.$Name, LOG_TYPE_USER);
    93       $this->UpdateState();
    94     } else $this->Role = LICENCE_ANONYMOUS;
     119      $this->Id = $User['ID'];
     120      $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('User' => $User['ID'], 'StayLogged' => $StayLogged));     
     121      $this->Database->query('UPDATE `UserTrace` SET '.
     122        '`LastLogin` = NOW(), '.
     123        '`LastIP` = "'.$_SERVER['REMOTE_ADDR'].'", '.
     124        '`UserAgent` = "'.$this->System->Database->real_escape_string($_SERVER['HTTP_USER_AGENT']).'" '.
     125        ' WHERE `User` = '.$this->Id);
     126      $this->System->ModuleManager->Modules['Log']->WriteLog('Login', LOG_TYPE_USER);
     127      $this->Check();
     128    };
    95129  }
    96130 
    97131  function Logout()
    98132  {
     133        $SID = session_id();
    99134    if($this->Role != LICENCE_ANONYMOUS)
    100       $this->System->Database->query('UPDATE `UserTrace` SET '.
     135    {
     136      $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('User' => null));
     137      $this->Database->query('UPDATE `UserTrace` SET '.
    101138        '`LastLogout` = NOW() WHERE `User` = '.$this->Id);
    102     $this->SetAnonymous();
     139      $this->System->ModuleManager->Modules['Log']->WriteLog('Logout: '.$this->Name, LOG_TYPE_USER);
     140      $this->Check();
     141    }
    103142  }
    104143 
    105144  function Load()
    106145  {
    107     $DbResult = $this->System->Database->query('SELECT * FROM `User` WHERE `ID` = '.$this->Id);
     146    $DbResult = $this->Database->query('SELECT * FROM `User` WHERE `ID` = '.$this->Id);
    108147    if($DbResult->num_rows > 0)
    109148    {
     
    122161  }
    123162 
    124   function Restore()
    125   {
    126     if(array_key_exists('UserId', $_SESSION))
    127     {
    128       $this->Id = $_SESSION['UserId'];
    129       if($this->Id != 0)
    130       {
    131         $this->Load();
    132         $this->UpdateState();
    133       } else $this->SetAnonymous();
    134     } else $this->SetAnonymous();
    135   }
    136  
    137   function Store()
    138   {
    139     $_SESSION['UserId'] = $this->Id;
    140   }
    141  
    142163  function SetAnonymous()
    143164  {
     
    159180  function CheckToken($Licence, $Token)
    160181  {
    161     $DbResult = $this->System->Database->select('APIToken', 'User', '`Token`="'.$Token.'"');
     182    $DbResult = $this->Database->select('APIToken', 'User', '`Token`="'.$Token.'"');
    162183    if($DbResult->num_rows > 0)
    163184    {
    164185      $DbRow = $DbResult->fetch_assoc();
    165       $DbResult2 = $this->System->Database->select('User', 'GM', '`ID`="'.$DbRow['User'].'"');
     186      $DbResult2 = $this->Database->select('User', 'GM', '`ID`="'.$DbRow['User'].'"');
    166187      $DbRow2 = $DbResult2->fetch_assoc();
    167188      return($DbRow2['GM'] >= $Licence);
     
    179200  }
    180201 
    181   function UpdateState()
    182   {
    183     if(array_key_exists('REMOTE_ADDR', $_SERVER) and ($this->Role != LICENCE_ANONYMOUS))
    184       $this->System->Database->query('UPDATE `UserTrace` SET '.
    185         '`LastIP` = "'.$_SERVER['REMOTE_ADDR'].'", '.
    186         '`LastLogin` = NOW(), '.
    187         '`UserAgent` = "'.$this->System->Database->real_escape_string($_SERVER['HTTP_USER_AGENT']).'" '.
    188         'WHERE `User` = '.$this->Id);
     202  function Check()
     203  {
     204    $SID = session_id();
     205    // Lookup user record
     206    $Query = $this->Database->select('UserOnline', '*', 'SessionId="'.$SID.'"');
     207    if($Query->num_rows > 0)
     208    {
     209      // Refresh time of last access
     210      $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('ActivityTime' => 'NOW()'));
     211    } else $this->Database->insert('UserOnline', array('SessionId' => $SID,
     212      'User' => null, 'LoginTime' => 'NOW()', 'ActivityTime' => 'NOW()',
     213      'IpAddress' => GetRemoteAddress(), 'HostName' => gethostbyaddr(GetRemoteAddress()),
     214      'ScriptName' => $_SERVER['PHP_SELF']));
     215     
     216    // Check login
     217    $Query = $this->Database->select('UserOnline', '*', '`SessionId`="'.$SID.'"');
     218    $Row = $Query->fetch_assoc();
     219    if($Row['User'] != '')
     220    {
     221        $this->Id = $Row['User'];
     222      $this->Load();
     223    } else
     224    {
     225      $this->SetAnonymous();
     226    }
     227   
     228    // Remove nonactive users
     229    $DbResult = $this->Database->select('UserOnline', '`Id`, `User`', '(`ActivityTime` < DATE_SUB(NOW(), INTERVAL '.$this->OnlineStateTimeout.' SECOND)) AND (`StayLogged` = 0)');
     230    while($DbRow = $DbResult->fetch_array())
     231    {
     232      $this->Database->delete('UserOnline', 'Id='.$DbRow['Id']);
     233    }
    189234  }
    190235 
     
    192237  {
    193238    $Salt = $this->GetPasswordSalt();
    194     $this->System->Database->query('INSERT INTO `User` '.
     239    $this->Database->query('INSERT INTO `User` '.
    195240      '(`Name` , `Pass` , `Salt`, `Email` , `Language` , `Team` , `NeedUpdate`, `RegistrationTime`, `PreferredVersion` ) '.
    196241      'VALUES ("'.$UserName.'", '.$this->CryptPasswordSQL('"'.$Password.'"', '"'.$Salt.'"').
    197242      ', "'.$Salt.'", "'.$Email.'", '.$Language.', '.$Team.', 1, NOW(), '.$PreferredVersion.')');
    198     $UserId = $this->System->Database->insert_id;
    199     $this->System->Database->query('INSERT INTO `UserTrace` (`User`, `LastIP`, `UserAgent`) '.
     243    $UserId = $this->Database->insert_id;
     244    $this->Database->query('INSERT INTO `UserTrace` (`User`, `LastIP`, `UserAgent`) '.
    200245        'VALUES ('.$UserId.', "'.$_SERVER['REMOTE_ADDR'].'", '.
    201         '"'.$this->System->Database->real_escape_string($_SERVER['HTTP_USER_AGENT']).'")');
     246        '"'.$this->Database->real_escape_string($_SERVER['HTTP_USER_AGENT']).'")');
    202247  }
    203248}
  • trunk/admin/UpdateTrace.php

    r695 r712  
    19491949
    19501950--
    1951 -- Omezení pro exportované tabulky
    1952 --
    1953 
    1954 --
    1955 -- Omezení pro tabulku `CzWoWPackageVersion`
     1951-- Omezení pro exportované tabulky
     1952--
     1953
     1954--
     1955-- Omezení pro tabulku `CzWoWPackageVersion`
    19561956--
    19571957ALTER TABLE `CzWoWPackageVersion`
     
    19591959
    19601960--
    1961 -- Omezení pro tabulku `Dictionary`
     1961-- Omezení pro tabulku `Dictionary`
    19621962--
    19631963ALTER TABLE `Dictionary`
     
    19661966
    19671967--
    1968 -- Omezení pro tabulku `Export`
     1968-- Omezení pro tabulku `Export`
    19691969--
    19701970ALTER TABLE `Export`
     
    19741974
    19751975--
    1976 -- Omezení pro tabulku `ExportGroup`
     1976-- Omezení pro tabulku `ExportGroup`
    19771977--
    19781978ALTER TABLE `ExportGroup`
     
    19821982
    19831983--
    1984 -- Omezení pro tabulku `ExportLanguage`
     1984-- Omezení pro tabulku `ExportLanguage`
    19851985--
    19861986ALTER TABLE `ExportLanguage`
     
    19891989
    19901990--
    1991 -- Omezení pro tabulku `ExportTask`
     1991-- Omezení pro tabulku `ExportTask`
    19921992--
    19931993ALTER TABLE `ExportTask`
     
    19951995
    19961996--
    1997 -- Omezení pro tabulku `ExportUser`
     1997-- Omezení pro tabulku `ExportUser`
    19981998--
    19991999ALTER TABLE `ExportUser`
     
    20022002
    20032003--
    2004 -- Omezení pro tabulku `ExportVersion`
     2004-- Omezení pro tabulku `ExportVersion`
    20052005--
    20062006ALTER TABLE `ExportVersion`
     
    20092009
    20102010--
    2011 -- Omezení pro tabulku `GroupItem`
     2011-- Omezení pro tabulku `GroupItem`
    20122012--
    20132013ALTER TABLE `GroupItem`
     
    20152015
    20162016--
    2017 -- Omezení pro tabulku `GroupItemDBC`
     2017-- Omezení pro tabulku `GroupItemDBC`
    20182018--
    20192019ALTER TABLE `GroupItemDBC`
     
    20222022
    20232023--
    2024 -- Omezení pro tabulku `Log`
     2024-- Omezení pro tabulku `Log`
    20252025--
    20262026ALTER TABLE `Log`
     
    20292029
    20302030--
    2031 -- Omezení pro tabulku `News`
     2031-- Omezení pro tabulku `News`
    20322032--
    20332033ALTER TABLE `News`
     
    20352035
    20362036--
    2037 -- Omezení pro tabulku `Referrer`
     2037-- Omezení pro tabulku `Referrer`
    20382038--
    20392039ALTER TABLE `Referrer`
     
    20412041
    20422042--
    2043 -- Omezení pro tabulku `ShoutBox`
     2043-- Omezení pro tabulku `ShoutBox`
    20442044--
    20452045ALTER TABLE `ShoutBox`
     
    20472047
    20482048--
    2049 -- Omezení pro tabulku `Team`
     2049-- Omezení pro tabulku `Team`
    20502050--
    20512051ALTER TABLE `Team`
     
    20532053
    20542054--
    2055 -- Omezení pro tabulku `TextAchievement`
     2055-- Omezení pro tabulku `TextAchievement`
    20562056--
    20572057ALTER TABLE `TextAchievement`
     
    20632063
    20642064--
    2065 -- Omezení pro tabulku `TextAchievementCategory`
     2065-- Omezení pro tabulku `TextAchievementCategory`
    20662066--
    20672067ALTER TABLE `TextAchievementCategory`
     
    20712071
    20722072--
    2073 -- Omezení pro tabulku `TextAchievementCriteria`
     2073-- Omezení pro tabulku `TextAchievementCriteria`
    20742074--
    20752075ALTER TABLE `TextAchievementCriteria`
     
    20792079
    20802080--
    2081 -- Omezení pro tabulku `TextArea`
     2081-- Omezení pro tabulku `TextArea`
    20822082--
    20832083ALTER TABLE `TextArea`
     
    20932093
    20942094--
    2095 -- Omezení pro tabulku `TextAreaPOI`
     2095-- Omezení pro tabulku `TextAreaPOI`
    20962096--
    20972097ALTER TABLE `TextAreaPOI`
     
    21012101
    21022102--
    2103 -- Omezení pro tabulku `TextAreaTriggerTavern`
     2103-- Omezení pro tabulku `TextAreaTriggerTavern`
    21042104--
    21052105ALTER TABLE `TextAreaTriggerTavern`
     
    21092109
    21102110--
    2111 -- Omezení pro tabulku `TextAreaTriggerTeleport`
     2111-- Omezení pro tabulku `TextAreaTriggerTeleport`
    21122112--
    21132113ALTER TABLE `TextAreaTriggerTeleport`
     
    21172117
    21182118--
    2119 -- Omezení pro tabulku `TextCharacterClass`
     2119-- Omezení pro tabulku `TextCharacterClass`
    21202120--
    21212121ALTER TABLE `TextCharacterClass`
     
    21252125
    21262126--
    2127 -- Omezení pro tabulku `TextCharacterRace`
     2127-- Omezení pro tabulku `TextCharacterRace`
    21282128--
    21292129ALTER TABLE `TextCharacterRace`
     
    21332133
    21342134--
    2135 -- Omezení pro tabulku `TextChatChannel`
     2135-- Omezení pro tabulku `TextChatChannel`
    21362136--
    21372137ALTER TABLE `TextChatChannel`
     
    21412141
    21422142--
    2143 -- Omezení pro tabulku `TextCreature`
     2143-- Omezení pro tabulku `TextCreature`
    21442144--
    21452145ALTER TABLE `TextCreature`
     
    21492149
    21502150--
    2151 -- Omezení pro tabulku `TextCreatureType`
     2151-- Omezení pro tabulku `TextCreatureType`
    21522152--
    21532153ALTER TABLE `TextCreatureType`
     
    21572157
    21582158--
    2159 -- Omezení pro tabulku `TextEmote`
     2159-- Omezení pro tabulku `TextEmote`
    21602160--
    21612161ALTER TABLE `TextEmote`
     
    21652165
    21662166--
    2167 -- Omezení pro tabulku `TextGameObject`
     2167-- Omezení pro tabulku `TextGameObject`
    21682168--
    21692169ALTER TABLE `TextGameObject`
     
    21732173
    21742174--
    2175 -- Omezení pro tabulku `TextGameTip`
     2175-- Omezení pro tabulku `TextGameTip`
    21762176--
    21772177ALTER TABLE `TextGameTip`
     
    21812181
    21822182--
    2183 -- Omezení pro tabulku `TextGlobalString`
     2183-- Omezení pro tabulku `TextGlobalString`
    21842184--
    21852185ALTER TABLE `TextGlobalString`
     
    21882188
    21892189--
    2190 -- Omezení pro tabulku `TextGlueLocalization`
     2190-- Omezení pro tabulku `TextGlueLocalization`
    21912191--
    21922192ALTER TABLE `TextGlueLocalization`
     
    21962196
    21972197--
    2198 -- Omezení pro tabulku `TextGlueString`
     2198-- Omezení pro tabulku `TextGlueString`
    21992199--
    22002200ALTER TABLE `TextGlueString`
     
    22032203
    22042204--
    2205 -- Omezení pro tabulku `TextItem`
     2205-- Omezení pro tabulku `TextItem`
    22062206--
    22072207ALTER TABLE `TextItem`
     
    22112211
    22122212--
    2213 -- Omezení pro tabulku `TextItemSubClass`
     2213-- Omezení pro tabulku `TextItemSubClass`
    22142214--
    22152215ALTER TABLE `TextItemSubClass`
     
    22192219
    22202220--
    2221 -- Omezení pro tabulku `TextMangosCommand`
     2221-- Omezení pro tabulku `TextMangosCommand`
    22222222--
    22232223ALTER TABLE `TextMangosCommand`
     
    22262226
    22272227--
    2228 -- Omezení pro tabulku `TextMangosString`
     2228-- Omezení pro tabulku `TextMangosString`
    22292229--
    22302230ALTER TABLE `TextMangosString`
     
    22342234
    22352235--
    2236 -- Omezení pro tabulku `TextNPC`
     2236-- Omezení pro tabulku `TextNPC`
    22372237--
    22382238ALTER TABLE `TextNPC`
     
    22412241
    22422242--
    2243 -- Omezení pro tabulku `TextNPCOption`
     2243-- Omezení pro tabulku `TextNPCOption`
    22442244--
    22452245ALTER TABLE `TextNPCOption`
     
    22492249
    22502250--
    2251 -- Omezení pro tabulku `TextPage`
     2251-- Omezení pro tabulku `TextPage`
    22522252--
    22532253ALTER TABLE `TextPage`
     
    22562256
    22572257--
    2258 -- Omezení pro tabulku `TextQuest`
     2258-- Omezení pro tabulku `TextQuest`
    22592259--
    22602260ALTER TABLE `TextQuest`
     
    22652265
    22662266--
    2267 -- Omezení pro tabulku `TextSD2EventAI`
     2267-- Omezení pro tabulku `TextSD2EventAI`
    22682268--
    22692269ALTER TABLE `TextSD2EventAI`
     
    22732273
    22742274--
    2275 -- Omezení pro tabulku `TextSD2Script`
     2275-- Omezení pro tabulku `TextSD2Script`
    22762276--
    22772277ALTER TABLE `TextSD2Script`
     
    22812281
    22822282--
    2283 -- Omezení pro tabulku `TextSkillCategory`
     2283-- Omezení pro tabulku `TextSkillCategory`
    22842284--
    22852285ALTER TABLE `TextSkillCategory`
     
    22942294
    22952295--
    2296 -- Omezení pro tabulku `TextSkillLine`
     2296-- Omezení pro tabulku `TextSkillLine`
    22972297--
    22982298ALTER TABLE `TextSkillLine`
     
    23022302
    23032303--
    2304 -- Omezení pro tabulku `TextSpell`
     2304-- Omezení pro tabulku `TextSpell`
    23052305--
    23062306ALTER TABLE `TextSpell`
     
    23102310
    23112311--
    2312 -- Omezení pro tabulku `TextTalentTab`
     2312-- Omezení pro tabulku `TextTalentTab`
    23132313--
    23142314ALTER TABLE `TextTalentTab`
     
    23182318
    23192319--
    2320 -- Omezení pro tabulku `TextTotemCategory`
     2320-- Omezení pro tabulku `TextTotemCategory`
    23212321--
    23222322ALTER TABLE `TextTotemCategory`
     
    23262326
    23272327--
    2328 -- Omezení pro tabulku `TextTransport`
     2328-- Omezení pro tabulku `TextTransport`
    23292329--
    23302330ALTER TABLE `TextTransport`
     
    23342334
    23352335--
    2336 -- Omezení pro tabulku `TextWorldStateUI`
     2336-- Omezení pro tabulku `TextWorldStateUI`
    23372337--
    23382338ALTER TABLE `TextWorldStateUI`
     
    23422342
    23432343--
    2344 -- Omezení pro tabulku `User`
     2344-- Omezení pro tabulku `User`
    23452345--
    23462346ALTER TABLE `User`
     
    23492349 
    23502350  $Manager->Execute('INSERT INTO `DbVersion` (`Id` ,`Revision`) VALUES ("1", "498")');
    2351   $Manager->Execute('INSERT INTO `Language` (`Id` ,`Name` ,`Enabled`)VALUES (NULL , "Angličtina", 0);');
    2352   $Manager->Execute('INSERT INTO `Language` (`Id` ,`Name` ,`Enabled`)VALUES (NULL , "ČeÅ¡tina", 1);');
     2351  $Manager->Execute('INSERT INTO `Language` (`Id` ,`Name` ,`Enabled`)VALUES (NULL , "Angličtina", 0);');
     2352  $Manager->Execute('INSERT INTO `Language` (`Id` ,`Name` ,`Enabled`)VALUES (NULL , "Čeština", 1);');
    23532353  $Manager->Execute("INSERT INTO `LogType` (`Id`, `Name`, `Color`, `Description`) VALUES
    2354 (1, 'Překlady', 'green', 'Operace s překlady'),
    2355 (2, 'Stažení', 'brown', 'Stáhnutí souboru'),
    2356 (3, 'Uživatelé', 'blue', 'Přihlášení uživatelů, nastavení, registrace'),
    2357 (4, 'Moderátor', 'orange', 'Operace administrátorů a moderátorů'),
    2358 (10, 'Chyby', 'red', 'Zachycené chybové hlášení'),
    2359 (11, 'Import', 'magenta', 'Záznam změn při importu'),
    2360 (12, 'Export', '#1080F0', 'Záznam akcí s exporty'),
    2361 (13, 'CzWoW', 'violet', 'Překládací addon CzWoW'),
    2362 (14, 'Administrace', 'olive', 'Administrativní akce');");
     2354(1, 'Překlady', 'green', 'Operace s překlady'),
     2355(2, 'Stažení', 'brown', 'Stáhnutí souboru'),
     2356(3, 'Uživatelé', 'blue', 'Přihlášení uživatelů, nastavení, registrace'),
     2357(4, 'Moderátor', 'orange', 'Operace administrátorů a moderátorů'),
     2358(10, 'Chyby', 'red', 'Zachycené chybové hlášení'),
     2359(11, 'Import', 'magenta', 'Záznam změn při importu'),
     2360(12, 'Export', '#1080F0', 'Záznam akcí s exporty'),
     2361(13, 'CzWoW', 'violet', 'Překládací addon CzWoW'),
     2362(14, 'Administrace', 'olive', 'Administrativní akce');");
    23632363  $Manager->Execute("INSERT INTO `ClientVersion` (`Id`, `Version`, `BuildNumber`, `ReleaseDate`, `Title`, `Imported`) VALUES
    23642364(1, '3.1.3', 9947, '2009-06-02', '', 0),
     
    24672467(104, '5.1.0a', 16357, '2012-12-10', '', 0);");
    24682468  $Manager->Execute("INSERT INTO `ExportOutputType` (`Id`, `Name`) VALUES
    2469   (1, 'MaNGOS SQL - přímo zobrazit'),
    2470   (2, 'MaNGOS SQL - komprimovaný soubor'),
    2471   (3, 'AoWoW SQL - přímo zobrazit'),
    2472   (4, 'AoWoW SQL - komprimovaný soubor'),
    2473   (5, 'XML - přímo zobrazit'),
    2474   (6, 'XML - komprimovaný soubor'),
    2475   (7, 'Addon - komprimovaný soubor'),
    2476   (8, 'Lua skripty - komprimovaný soubor'),
     2469  (1, 'MaNGOS SQL - přímo zobrazit'),
     2470  (2, 'MaNGOS SQL - komprimovaný soubor'),
     2471  (3, 'AoWoW SQL - přímo zobrazit'),
     2472  (4, 'AoWoW SQL - komprimovaný soubor'),
     2473  (5, 'XML - přímo zobrazit'),
     2474  (6, 'XML - komprimovaný soubor'),
     2475  (7, 'Addon - komprimovaný soubor'),
     2476  (8, 'Lua skripty - komprimovaný soubor'),
    24772477  (9, 'DBC soubory');");
    24782478}
     
    26122612{
    26132613        $Manager->Execute("INSERT INTO `LogType` (`Id` ,`Name` ,`Color` ,`Description`)
    2614 VALUES (NULL , 'Nenalezené', 'teal', 'Nenalezené stránky');");
     2614VALUES (NULL , 'Nenalezené', 'teal', 'Nenalezené stránky');");
    26152615}
    26162616
     
    26442644ADD `Code` VARCHAR( 255 ) NOT NULL ;');
    26452645  $Manager->Execute('UPDATE `Language` SET `Default` = 1,
    2646 `Code` = "en" WHERE `Language`.`Name` ="Angličitna";');
    2647   $Manager->Execute('UPDATE `Language` SET `Code` = "cs" WHERE `Language`.`Name` ="ČeÅ¡tina";');
    2648   $Manager->Execute('UPDATE `Language` SET `Code` = "sk" WHERE `Language`.`Name` ="SlovenÅ¡tina";');   
     2646`Code` = "en" WHERE `Language`.`Name` ="Angličitna";');
     2647  $Manager->Execute('UPDATE `Language` SET `Code` = "cs" WHERE `Language`.`Name` ="Čeština";');
     2648  $Manager->Execute('UPDATE `Language` SET `Code` = "sk" WHERE `Language`.`Name` ="Slovenština";');   
    26492649}
    26502650
     
    26752675function UpdateTo666($Manager)
    26762676{
    2677         $Manager->Execute('INSERT INTO  `ExportOutputType` (`Id` ,`Name`)VALUES (\'10\' ,  \'Instalace - Instalaèní soubor pro klienta\');');   
     2677        $Manager->Execute('INSERT INTO  `ExportOutputType` (`Id` ,`Name`)VALUES (\'10\' ,  \'Instalace - Instala�n� soubor pro klienta\');');   
    26782678        $Manager->Execute('INSERT INTO  `ExportVersion` (`Id` ,`ExportType` ,`ClientVersion`)VALUES (NULL ,  \'10\',  \'84\');');   
    26792679}
     
    26922692  'ADD CONSTRAINT `ExportGroupItem_ibfk_1` FOREIGN KEY (`Export`) REFERENCES `Export` (`Id`),'.
    26932693  'ADD CONSTRAINT `ExportGroupItem_ibfk_2` FOREIGN KEY (`GroupItem`) REFERENCES `GroupItem` (`Id`);');   
     2694}
     2695
     2696function UpdateTo712($Manager)
     2697{
     2698        $Manager->Execute('CREATE TABLE IF NOT EXISTS `UserOnline` (
     2699  `Id` int(11) NOT NULL AUTO_INCREMENT,
     2700  `User` int(11) DEFAULT NULL,
     2701  `ActivityTime` datetime NULL,
     2702  `LoginTime` datetime NULL,
     2703  `SessionId` varchar(255) NOT NULL DEFAULT "",
     2704  `IpAddress` varchar(16) NOT NULL DEFAULT "",
     2705  `HostName` varchar(255) NOT NULL DEFAULT "",
     2706  `ScriptName` varchar(255) NOT NULL,
     2707  `StayLogged` int(11) NOT NULL,
     2708  PRIMARY KEY (`Id`),
     2709  KEY `User` (`User`)
     2710) ENGINE=MEMORY  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;');
    26942711}
    26952712
     
    27132730        666 => array('Revision' => 678 , 'Function' => 'UpdateTo678'),
    27142731        678 => array('Revision' => 695 , 'Function' => 'UpdateTo695'),
     2732        695 => array('Revision' => 712 , 'Function' => 'UpdateTo712'),
    27152733);
  • trunk/includes/Version.php

    r711 r712  
    66// and system will need database update.
    77
    8 $Revision = 711; // Subversion revision
    9 $DatabaseRevision = 695; // Database structure revision
     8$Revision = 712; // Subversion revision
     9$DatabaseRevision = 712; // Database structure revision
    1010$ReleaseTime = '2014-01-05';
  • trunk/includes/global.php

    r703 r712  
    712712        return($Output);
    713713}
     714
     715function GetRemoteAddress()
     716{
     717  if(array_key_exists('HTTP_X_FORWARDED_FOR',$_SERVER)) $IP = $_SERVER['HTTP_X_FORWARDED_FOR'] ;
     718  else if(array_key_exists('REMOTE_ADDR', $_SERVER)) $IP = $_SERVER['REMOTE_ADDR'];
     719  else $IP = '0.0.0.0';
     720  return($IP);
     721}
  • trunk/includes/system.php

    r711 r712  
    279279                } else
    280280                {
    281                         $Output .= '<form action="'.$this->System->Link('/?action=login').'" method="post"> '.
    282                                         T('Name').': <input type="text" name="LoginUser" size="8 " /> '.
    283                                         T('Password').': <td><input type="password" name="LoginPass" size="8" /> '.
    284                                         '<input type="submit" value="'.T('Login').'" /></form> &nbsp; '.
     281                        $Output .= '<a href="'.$this->System->Link('/login/').'">'.T('Login').'</a>&nbsp;'.
    285282                                        '<a href="'.$this->System->Link('/registrace.php').'">'.T('Registration').'</a>';
    286283                }
     
    446443      '</body>'.
    447444      '</html>';
    448                 $this->System->User->Store();
    449445                return($Output);
    450446        }
Note: See TracChangeset for help on using the changeset viewer.