Changeset 816 for trunk/Modules/User


Ignore:
Timestamp:
Feb 22, 2015, 11:20:50 PM (10 years ago)
Author:
chronos
Message:
  • Modified: Tabs converted to spaces.
  • Modified: Remove spaces from end of lines.
  • Added: Code format script.
Location:
trunk/Modules/User
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Modules/User/Options.php

    r787 r816  
    33class PageUserOptions extends Page
    44{
    5         function UserOptionsFrom()
    6         {
    7                 $Output = '<form action="Options.php?action=save" method="post">
    8                 <fieldset><legend>Nastavení uživatele</legend>
    9                 <table>
    10                 <tr><td>Email:</td><td><input type="text" name="Email" value="'.$this->System->User->Email.'" /></td></tr>
    11                 <tr><td>Původní heslo:</td><td><input type="password" name="OldPass" /></td></tr>
    12                 <tr><td>Nové heslo:</td><td><input type="password" name="NewPass" /></td></tr>
    13                 <tr><td>Nové heslo pro potvrzení: </td><td><input type="password" name="NewPass2" /></td></tr>
    14                 <tr><td>Normálně budu překládat do: </td><td>'.WriteLanguages($this->System->User->Language).'</td></tr>
    15                 <tr><td>Po uložení překladu přesměrovat: </td><td>';
    16                 $Output .= '<select name="redirecting">'.
    17                                 '<option value="0">Nikam</option>'.
    18                                 '<option value="1"';
    19                 if($this->System->User->Redirecting == '1') $Output .= ' selected="selected"';
    20                 $Output .= '>Na nepřeložené</option>';
    21                 $Output .= '<option value="2"';
    22                 if($this->System->User->Redirecting == '2') $Output .= ' selected="selected"';
    23                 $Output .= '>Na další překlad</option>';
    24                 $Output .= '<option value="3"';
    25                 if($this->System->User->Redirecting == '3') $Output .= ' selected="selected"';
    26                 $Output .= '>Na předchozí překlad</option>';
    27                 $Output .= '</select>';
    28        
    29                 $Output .= '</td></tr>'.
    30                                 '<tr><td>Upřednostněná verze klienta: </td><td>'.ClientVersionSelection($this->System->User->PreferredVersion).'</td></tr>'.
    31                                 '<tr><td>Veřejný text profilu:</td><td>'.
    32                                 '<textarea name="info" cols="60" rows="10">'.$this->System->User->Info.'</textarea></td></tr>';
    33        
    34        
     5  function UserOptionsFrom()
     6  {
     7    $Output = '<form action="Options.php?action=save" method="post">
     8    <fieldset><legend>Nastavení uživatele</legend>
     9    <table>
     10    <tr><td>Email:</td><td><input type="text" name="Email" value="'.$this->System->User->Email.'" /></td></tr>
     11    <tr><td>Původní heslo:</td><td><input type="password" name="OldPass" /></td></tr>
     12    <tr><td>Nové heslo:</td><td><input type="password" name="NewPass" /></td></tr>
     13    <tr><td>Nové heslo pro potvrzení: </td><td><input type="password" name="NewPass2" /></td></tr>
     14    <tr><td>Normálně budu překládat do: </td><td>'.WriteLanguages($this->System->User->Language).'</td></tr>
     15    <tr><td>Po uložení překladu přesměrovat: </td><td>';
     16    $Output .= '<select name="redirecting">'.
     17        '<option value="0">Nikam</option>'.
     18        '<option value="1"';
     19    if($this->System->User->Redirecting == '1') $Output .= ' selected="selected"';
     20    $Output .= '>Na nepřeložené</option>';
     21    $Output .= '<option value="2"';
     22    if($this->System->User->Redirecting == '2') $Output .= ' selected="selected"';
     23    $Output .= '>Na další překlad</option>';
     24    $Output .= '<option value="3"';
     25    if($this->System->User->Redirecting == '3') $Output .= ' selected="selected"';
     26    $Output .= '>Na předchozí překlad</option>';
     27    $Output .= '</select>';
     28
     29    $Output .= '</td></tr>'.
     30        '<tr><td>Upřednostněná verze klienta: </td><td>'.ClientVersionSelection($this->System->User->PreferredVersion).'</td></tr>'.
     31        '<tr><td>Veřejný text profilu:</td><td>'.
     32        '<textarea name="info" cols="60" rows="10">'.$this->System->User->Info.'</textarea></td></tr>';
     33
     34
    3535    $Output .= '<tr><td>';
    36                 $Query = 'SELECT * FROM UserTagType';
    37                 $DbResult = $this->Database->query($Query);
     36    $Query = 'SELECT * FROM UserTagType';
     37    $DbResult = $this->Database->query($Query);
    3838    $Output .= 'Překladatel se řídí zaškrtnutými pravidly:</td><td>';
    39     while ($UserTag = $DbResult->fetch_array()) { 
    40                  $Query = 'SELECT * FROM `UserTag` '.
     39    while ($UserTag = $DbResult->fetch_array()) {
     40     $Query = 'SELECT * FROM `UserTag` '.
    4141     //'LEFT JOIN `UserTagType` ON `UserTagType`.`ID` = `UserTag`.`UserTagType` '.
    4242     'WHERE `UserTagType` = '.$UserTag['ID'].' AND `User` = '.($this->System->User->Id * 1);
    43                   $DbResult2 = $this->Database->query($Query);
     43      $DbResult2 = $this->Database->query($Query);
    4444      if ($DbResult2->num_rows != 0) $checked = true;
    45       else  $checked = false; 
    46      
    47       $Output .= CheckBox('Tag'.$UserTag['ID'], $checked, 'CheckBox');   
     45      else  $checked = false;
     46
     47      $Output .= CheckBox('Tag'.$UserTag['ID'], $checked, 'CheckBox');
    4848      $Output .= ''.$UserTag['Text'].'<br />';
    4949    }
    5050    $Output .= '</td></tr>';
    51    
    52                 $Output .= '<tr><td colspan="2"><input type="submit" value="Uložit" /></td></tr>'.
    53                                 '</table></fieldset>'.
    54                                 '</form>';
    55        
    56                 $Output .= '  <fieldset><legend>Překladatelský tým</legend>';
    57                 $DbResult = $this->Database->query('SELECT `Id`, `Name` FROM `Team`');
    58                 $Output .= '<a href="team/?action=create">Vytvořit tým</a><br />'.
    59                                 '<a href="team/?action=leave">Opustit tým</a><br />'.
    60                                 '<br /><form action="team/" method="get">'.
    61                                 '<input type="hidden" name="action" value="gointeam"/>'.
    62                                 '<select name="id">';
    63                 while($LineTeam = $DbResult->fetch_assoc())
    64                 {
    65                         $Output .= '<option value="'.$LineTeam['Id'].'"';
    66                         if ($LineTeam['Id'] == $this->System->User->Team) $Output .= ' selected="selected"';
    67                         $Output .= '>'.$LineTeam['Name'].'</option>';
    68                 }
    69                 $Output .= '</select> <input type="submit" value="Vstoupit" />
    70                 </form>';
    71                 $Output .= '</fieldset>';
    72                 return($Output);
    73         }
    74        
    75         function UserOptionsSave()
    76         {
    77                 $Output = '';
    78                 if(array_key_exists('Email', $_POST))
    79                 {
    80                         $Email = $_POST['Email'];
    81                         $OldPass = $_POST['OldPass'];
    82                         $NewPass = $_POST['NewPass'];
    83                         $NewPass2 = $_POST['NewPass2'];
    84                         $Language = $_POST['Language'];
    85                         $Redirecting = $_POST['redirecting'];
    86                         $PreferredVersion = $_POST['ClientVersion'];
    87                         if($PreferredVersion == '') $PreferredVersion = null;
    88                         $Info = $_POST['info'];
    89        
    90                         // Do user want to change password?
    91                         if(($OldPass != '') or ($NewPass != '') or ($NewPass2 != ''))
    92                         {
    93                                 if($NewPass == $NewPass2)
    94                                 {
    95                                         $DbResult = $this->System->Database->query('SELECT `Pass`, '.$this->System->User->CryptPasswordSQL('"'.$OldPass.'"', '`Salt`').' AS `Hash` FROM `User` WHERE `ID`= '.$this->System->User->Id);
    96                                         $DbRow = $DbResult->fetch_assoc();
    97                                         if($DbRow['Hash'] == $DbRow['Pass'])
    98                                         {
    99                                                 // Update password
    100                                                 $Salt = $this->System->User->GetPasswordSalt();
    101                                                 $this->Database->query('UPDATE `User` SET `Pass` = '.$this->System->User->CryptPasswordSQL('"'.$NewPass.'"', '"'.$Salt.'"').', `Salt`="'.$Salt.'" WHERE `ID` = '.$this->System->User->Id);
    102                                                 $Output .= ShowMessage('Heslo změněno.');
    103                                         } else $Output .= ShowMessage('Staré heslo neodpovídá.', MESSAGE_CRITICAL);
    104                                 } else $Output .= ShowMessage('Hesla se neshodují.', MESSAGE_CRITICAL);
    105                         }
     51
     52    $Output .= '<tr><td colspan="2"><input type="submit" value="Uložit" /></td></tr>'.
     53        '</table></fieldset>'.
     54        '</form>';
     55
     56    $Output .= '  <fieldset><legend>Překladatelský tým</legend>';
     57    $DbResult = $this->Database->query('SELECT `Id`, `Name` FROM `Team`');
     58    $Output .= '<a href="team/?action=create">Vytvořit tým</a><br />'.
     59        '<a href="team/?action=leave">Opustit tým</a><br />'.
     60        '<br /><form action="team/" method="get">'.
     61        '<input type="hidden" name="action" value="gointeam"/>'.
     62        '<select name="id">';
     63    while($LineTeam = $DbResult->fetch_assoc())
     64    {
     65      $Output .= '<option value="'.$LineTeam['Id'].'"';
     66      if ($LineTeam['Id'] == $this->System->User->Team) $Output .= ' selected="selected"';
     67      $Output .= '>'.$LineTeam['Name'].'</option>';
     68    }
     69    $Output .= '</select> <input type="submit" value="Vstoupit" />
     70    </form>';
     71    $Output .= '</fieldset>';
     72    return($Output);
     73  }
     74
     75  function UserOptionsSave()
     76  {
     77    $Output = '';
     78    if(array_key_exists('Email', $_POST))
     79    {
     80      $Email = $_POST['Email'];
     81      $OldPass = $_POST['OldPass'];
     82      $NewPass = $_POST['NewPass'];
     83      $NewPass2 = $_POST['NewPass2'];
     84      $Language = $_POST['Language'];
     85      $Redirecting = $_POST['redirecting'];
     86      $PreferredVersion = $_POST['ClientVersion'];
     87      if($PreferredVersion == '') $PreferredVersion = null;
     88      $Info = $_POST['info'];
     89
     90      // Do user want to change password?
     91      if(($OldPass != '') or ($NewPass != '') or ($NewPass2 != ''))
     92      {
     93        if($NewPass == $NewPass2)
     94        {
     95          $DbResult = $this->System->Database->query('SELECT `Pass`, '.$this->System->User->CryptPasswordSQL('"'.$OldPass.'"', '`Salt`').' AS `Hash` FROM `User` WHERE `ID`= '.$this->System->User->Id);
     96          $DbRow = $DbResult->fetch_assoc();
     97          if($DbRow['Hash'] == $DbRow['Pass'])
     98          {
     99            // Update password
     100            $Salt = $this->System->User->GetPasswordSalt();
     101            $this->Database->query('UPDATE `User` SET `Pass` = '.$this->System->User->CryptPasswordSQL('"'.$NewPass.'"', '"'.$Salt.'"').', `Salt`="'.$Salt.'" WHERE `ID` = '.$this->System->User->Id);
     102            $Output .= ShowMessage('Heslo změněno.');
     103          } else $Output .= ShowMessage('Staré heslo neodpovídá.', MESSAGE_CRITICAL);
     104        } else $Output .= ShowMessage('Hesla se neshodují.', MESSAGE_CRITICAL);
     105      }
    106106      //tag
    107                 $Query = 'SELECT * FROM UserTagType';
    108                 $DbResult = $this->Database->query($Query);
    109       while ($UserTag = $DbResult->fetch_array()) { 
     107      $Query = 'SELECT * FROM UserTagType';
     108      $DbResult = $this->Database->query($Query);
     109      while ($UserTag = $DbResult->fetch_array()) {
    110110       if (array_key_exists('Tag'.$UserTag['ID'], $_POST)) {
    111                    $Query = 'SELECT * FROM `UserTag` '.
     111         $Query = 'SELECT * FROM `UserTag` '.
    112112         'WHERE `UserTagType` = '.$UserTag['ID'].' AND `User` = '.($this->System->User->Id * 1);
    113                 $DbResult2 = $this->Database->query($Query);
     113        $DbResult2 = $this->Database->query($Query);
    114114         if ($DbResult2->num_rows == 0) {
    115                    $Query = 'INSERT INTO `UserTag` (`ID` ,`UserTagType`,`User` ) '.
     115           $Query = 'INSERT INTO `UserTag` (`ID` ,`UserTagType`,`User` ) '.
    116116           'VALUES (NULL, '.$UserTag['ID'].' , '.($this->System->User->Id * 1).')';
    117                 $DbResult2 = $this->Database->query($Query);
     117          $DbResult2 = $this->Database->query($Query);
    118118         }
    119119       } else {
    120                    $Query = 'DELETE FROM `UserTag` '.
     120         $Query = 'DELETE FROM `UserTag` '.
    121121         'WHERE `UserTagType` = '.$UserTag['ID'].' AND `User` = '.($this->System->User->Id * 1);
    122                      $DbResult2 = $this->Database->query($Query);
     122         $DbResult2 = $this->Database->query($Query);
    123123       }
    124124      }
    125      
    126                         $this->Database->update('User', '`ID` = '.$this->System->User->Id, array('Email' => $Email,
    127                           'Language' => $Language, 'Redirecting' => $Redirecting, 'Info' => $Info,
    128                           'PreferredVersion' => $PreferredVersion));
    129                         $Output .= ShowMessage('Úprava nastavení proběhla v pořádku, Email: <b>'.$Email.'</b> Uživatel: <b>'.$this->System->User->Name.'</b>');
    130                         $this->System->ModuleManager->Modules['Log']->WriteLog('Úprava nastavení!', LOG_TYPE_USER);
    131                         $this->System->User->Load();
    132                 } else $Output .= ShowMessage('Nezadány údaje.', MESSAGE_CRITICAL);
    133                 return($Output);
    134         }
    135        
    136         function Show()
    137         {
    138                 $this->Title = T('User settings');
    139                 $Output = '';
    140                 if($this->System->User->Licence(LICENCE_USER))
    141                 {
    142                         if(array_key_exists('action', $_GET) and ($_GET['action'] == 'save'))
    143                         {
    144                                 $Output .= $this->UserOptionsSave();
    145                         }
    146                         $Output .= $this->UserOptionsFrom();
    147                 } else $Output .= ShowMessage('Nejste přihlášený.', MESSAGE_CRITICAL);
    148                 return($Output);
    149         }       
    150 }   
     125
     126      $this->Database->update('User', '`ID` = '.$this->System->User->Id, array('Email' => $Email,
     127        'Language' => $Language, 'Redirecting' => $Redirecting, 'Info' => $Info,
     128        'PreferredVersion' => $PreferredVersion));
     129      $Output .= ShowMessage('Úprava nastavení proběhla v pořádku, Email: <b>'.$Email.'</b> Uživatel: <b>'.$this->System->User->Name.'</b>');
     130      $this->System->ModuleManager->Modules['Log']->WriteLog('Úprava nastavení!', LOG_TYPE_USER);
     131      $this->System->User->Load();
     132    } else $Output .= ShowMessage('Nezadány údaje.', MESSAGE_CRITICAL);
     133    return($Output);
     134  }
     135
     136  function Show()
     137  {
     138    $this->Title = T('User settings');
     139    $Output = '';
     140    if($this->System->User->Licence(LICENCE_USER))
     141    {
     142      if(array_key_exists('action', $_GET) and ($_GET['action'] == 'save'))
     143      {
     144        $Output .= $this->UserOptionsSave();
     145      }
     146      $Output .= $this->UserOptionsFrom();
     147    } else $Output .= ShowMessage('Nejste přihlášený.', MESSAGE_CRITICAL);
     148    return($Output);
     149  }
     150}
  • trunk/Modules/User/Profile.php

    r797 r816  
    33class PageUserProfile extends Page
    44{
    5         function SendMail()
    6         {
    7                 $Output = '';
    8                 if(array_key_exists('text', $_POST))
    9                 if($this->System->User->Licence(LICENCE_ADMIN))
    10                 {
    11                         $Text = $_POST['text'];
    12                         $Email = $_POST['email'];
    13                         $Subject = $_POST['subject'];
    14                         $Output = 'Email: <strong>'.$Email.'</strong><br />'.
    15                                         'Předmět: <strong>'.$Subject.'</strong><br />'.
    16                                         'Text: <strong>'.$Text.'</strong><br />';
    17 
    18                         if(@mail($Email, $Subject, $Text, 'From: '.$this->System->Config['Web']['AdminEmail'].'\nReply-To: '.$this->System->Config['Web']['AdminEmail'].'\nX-Mailer: PHP/'))
    19                         {
    20                                 $Output .= ShowMessage(T('Message was sent'));
    21                         }
    22                         else $Output .= ShowMessage('Nepodařilo se odesat E-mail.', MESSAGE_CRITICAL);
    23                 } else $Output .= ShowMessage(T('Access denied'), MESSAGE_CRITICAL);
    24                 return($Output);
    25         }
    26 
    27         function ExportList()
    28         {
    29                 $Output = '';
    30                 $Filter = ' WHERE `Export`.`User` = '.($_GET['user'] * 1);
    31                 $DbResult = $this->System->Database->query('SELECT COUNT(*) FROM `Export` '.$Filter);
    32                 $DbRow = $DbResult->fetch_row();
    33                 $PageList = GetPageList($DbRow[0]);
    34 
    35                 $Output .= '<h3>Exporty</h3>'.
    36                                 $PageList['Output'];
    37 
    38                 $TableColumns = array(
    39                                 array('Name' => 'TimeCreate', 'Title' => 'Čas vytvoření'),
    40                                 array('Name' => 'Title', 'Title' => 'Označení'),
    41                                 //  array('Name' => 'UserCount', 'Title' => 'Vybraných překladatelů'),
    42                                 //  array('Name' => 'GroupCount', 'Title' => 'Překladových skupin'),
    43                                 array('Name' => 'OutputType', 'Title' => 'Typ výstupu'),
    44                                 array('Name' => 'ClientVersion', 'Title' => 'Verze klienta'),
    45                                 array('Name' => 'UsedCount', 'Title' => 'Prohlédnutí výstupu'),
    46                                 array('Name' => '', 'Title' => 'Akce'),
    47                 );
    48                 $Order = GetOrderTableHeader($TableColumns, 'TimeCreate', 1);
    49                 $Output .= '<table class="BaseTable">'.
    50                                 $Order['Output'];
    51 
    52                 $DbResult = $this->System->Database->query('SELECT `User`.`Name` AS `UserName`, `Export`.`Id`, `Export`.`TimeCreate`, `Export`.`Title`, `Export`.`User`, `Export`.`UsedCount`, `Export`.`ClientVersion` AS `ClientVersionId`, '.
     5  function SendMail()
     6  {
     7    $Output = '';
     8    if(array_key_exists('text', $_POST))
     9    if($this->System->User->Licence(LICENCE_ADMIN))
     10    {
     11      $Text = $_POST['text'];
     12      $Email = $_POST['email'];
     13      $Subject = $_POST['subject'];
     14      $Output = 'Email: <strong>'.$Email.'</strong><br />'.
     15          'Předmět: <strong>'.$Subject.'</strong><br />'.
     16          'Text: <strong>'.$Text.'</strong><br />';
     17
     18      if(@mail($Email, $Subject, $Text, 'From: '.$this->System->Config['Web']['AdminEmail'].'\nReply-To: '.$this->System->Config['Web']['AdminEmail'].'\nX-Mailer: PHP/'))
     19      {
     20        $Output .= ShowMessage(T('Message was sent'));
     21      }
     22      else $Output .= ShowMessage('Nepodařilo se odesat E-mail.', MESSAGE_CRITICAL);
     23    } else $Output .= ShowMessage(T('Access denied'), MESSAGE_CRITICAL);
     24    return($Output);
     25  }
     26
     27  function ExportList()
     28  {
     29    $Output = '';
     30    $Filter = ' WHERE `Export`.`User` = '.($_GET['user'] * 1);
     31    $DbResult = $this->System->Database->query('SELECT COUNT(*) FROM `Export` '.$Filter);
     32    $DbRow = $DbResult->fetch_row();
     33    $PageList = GetPageList($DbRow[0]);
     34
     35    $Output .= '<h3>Exporty</h3>'.
     36        $PageList['Output'];
     37
     38    $TableColumns = array(
     39        array('Name' => 'TimeCreate', 'Title' => 'Čas vytvoření'),
     40        array('Name' => 'Title', 'Title' => 'Označení'),
     41        //  array('Name' => 'UserCount', 'Title' => 'Vybraných překladatelů'),
     42        //  array('Name' => 'GroupCount', 'Title' => 'Překladových skupin'),
     43        array('Name' => 'OutputType', 'Title' => 'Typ výstupu'),
     44        array('Name' => 'ClientVersion', 'Title' => 'Verze klienta'),
     45        array('Name' => 'UsedCount', 'Title' => 'Prohlédnutí výstupu'),
     46        array('Name' => '', 'Title' => 'Akce'),
     47    );
     48    $Order = GetOrderTableHeader($TableColumns, 'TimeCreate', 1);
     49    $Output .= '<table class="BaseTable">'.
     50        $Order['Output'];
     51
     52    $DbResult = $this->System->Database->query('SELECT `User`.`Name` AS `UserName`, `Export`.`Id`, `Export`.`TimeCreate`, `Export`.`Title`, `Export`.`User`, `Export`.`UsedCount`, `Export`.`ClientVersion` AS `ClientVersionId`, '.
    5353      '(SELECT Version FROM `ClientVersion` WHERE `ClientVersion`.`Id`=`Export`.`ClientVersion`) AS `ClientVersion`, '.
    5454      '(SELECT Name FROM `ExportOutputType` WHERE `ExportOutputType`.`Id`=`Export`.`OutputType`) AS `OutputType`, '.
     
    5656      '(SELECT COUNT(*) FROM `ExportUser` WHERE `ExportUser`.`Export`=`Export`.`Id`) AS `UserCount` FROM `Export` '.
    5757      'LEFT JOIN `User` ON `User`.`ID`=`Export`.`User` '.$Filter.$Order['SQL'].$PageList['SQLLimit']);
    58                 while($Export = $DbResult->fetch_assoc())
    59                 {
    60                         $Action = '<a href="'.$this->System->Link('/export/?Action=View&amp;ExportId='.$Export['Id'].'&amp;Tab=0').'">Zobrazit</a> '.
    61                         '<a href="'.$this->System->Link('/export/?Action=View&amp;ExportId='.$Export['Id'].'&amp;Tab=7').'">Exportovat</a>';
    62                         if($Export['User'] == $this->System->User->Id) $Action .= ' <a href="?Action=Delete&amp;ExportId='.$Export['Id'].'" onclick="return confirmAction(\'Opravdu smazat položku?\');">Smazat</a>';
    63                         if($this->System->User->Id != null) $Action .= ' <a href="'.$this->System->Link('/export/?Action=Clone&amp;ExportId='.$Export['Id']).'" onclick="return confirmAction(\'Opravdu klonovat položku?\');">Klonovat</a>';
    64                         $Output .= '<tr><td>'.HumanDate($Export['TimeCreate']).'</td>'.
    65                                 '<td>'.$Export['Title'].'</td>'.
    66                                 '<td>'.$Export['OutputType'].'</td>'.
    67                                 '<td><a href="'.$this->System->Link('/client-version/?action=item&amp;id='.$Export['ClientVersionId']).'">'.$Export['ClientVersion'].'</a></td>'.
    68                                 '<td>'.$Export['UsedCount'].'</td>'.
    69                           '<td>'.$Action.'</td></tr>';
    70                 }
    71                 $Output .= '</table>'.
    72                                 $PageList['Output'];
    73 
    74                 $Output .= '<div style="text-align: center;"><a href="'.$this->System->Link('/export/').'">Stránka exportů</a></div>';
    75                 return($Output);
    76         }
    77 
    78         function ShowLastTranslated()
    79   {
    80         $Count = 20;
    81         $Output = '<strong>Poslední překlady:</strong>';
    82 
    83         $GroupListQuery = 'SELECT `Group`.* FROM `Group`';
    84         $Query = '';
    85         $UnionItems = array();
    86         $DbResult = $this->Database->query($GroupListQuery);
    87         if($DbResult->num_rows > 0)
    88         {
    89                 while($DbRow = $DbResult->fetch_assoc())
    90                 {
    91                         $UnionItems[] = 'SELECT `T`.`ID`, `T`.`Take`, `T`.`User`, `T`.`ModifyTime`, `T`.`Group`, `T`.`GroupName` '.
    92                           'FROM (SELECT `T`.`User`, `T`.`ID`, `T`.`ModifyTime`, '.
    93                                 $DbRow['Id'].' AS `Group`, "'.addslashes($DbRow['Name']).'" AS `GroupName`, `T`.`Take` FROM `'.
    94                                 $DbRow['TablePrefix'].'` AS `T` '.
    95                                 'WHERE (`T`.`Complete` = 1) AND '.
    96                                 '(`T`.`Language` != '.$this->System->Config['OriginalLanguage'].') AND '.
    97                                 '(`T`.`User` = '.($_GET['user'] * 1).') ORDER BY `T`.`ModifyTime` DESC LIMIT '.
    98                                 $Count.') AS `T`';
    99                 }
    100                 $Query = 'SELECT `TT`.*, `User`.`Name` AS `UserName`, `User`.`Id` AS `UserId` '.
    101                                 'FROM ('.implode(' UNION ', $UnionItems).') AS `TT` '.
    102                                 'JOIN `User` ON `User`.`Id` = `TT`.`User` '.
    103                                 'ORDER BY `ModifyTime` DESC LIMIT '.$Count;
    104                 $DbResult = $this->Database->query($Query);
    105                 $Output .= '<table class="BaseTable"><tr>'.
    106                   '<th>Datum</th><th>Nový</th><th>Zdroj</th><th>Skupina</th></tr>';
    107                 while($DbRow = $DbResult->fetch_assoc())
    108                 {
    109                         $Output .= '<tr><td>'.HumanDate($DbRow['ModifyTime']).'</td>'.
    110                                         '<td><a href="form.php?group='.$DbRow['Group'].'&amp;ID='.$DbRow['ID'].'">'.$DbRow['ID'].'</a></td>'.
    111                                         '<td><a href="form.php?group='.$DbRow['Group'].'&amp;ID='.$DbRow['Take'].'">'.$DbRow['Take'].'</a></td>'.
    112                                         '<td><a href="TranslationList.php?group='.$DbRow['Group'].'&amp;action=filter">'.$DbRow['GroupName'].'</a></td></tr>';
    113                 }
    114                 $Output .= '</table>';
    115         }
    116         return($Output);
    117   }
    118 
    119         function ShowLastForum()
     58    while($Export = $DbResult->fetch_assoc())
     59    {
     60      $Action = '<a href="'.$this->System->Link('/export/?Action=View&amp;ExportId='.$Export['Id'].'&amp;Tab=0').'">Zobrazit</a> '.
     61        '<a href="'.$this->System->Link('/export/?Action=View&amp;ExportId='.$Export['Id'].'&amp;Tab=7').'">Exportovat</a>';
     62      if($Export['User'] == $this->System->User->Id) $Action .= ' <a href="?Action=Delete&amp;ExportId='.$Export['Id'].'" onclick="return confirmAction(\'Opravdu smazat položku?\');">Smazat</a>';
     63      if($this->System->User->Id != null) $Action .= ' <a href="'.$this->System->Link('/export/?Action=Clone&amp;ExportId='.$Export['Id']).'" onclick="return confirmAction(\'Opravdu klonovat položku?\');">Klonovat</a>';
     64      $Output .= '<tr><td>'.HumanDate($Export['TimeCreate']).'</td>'.
     65        '<td>'.$Export['Title'].'</td>'.
     66        '<td>'.$Export['OutputType'].'</td>'.
     67        '<td><a href="'.$this->System->Link('/client-version/?action=item&amp;id='.$Export['ClientVersionId']).'">'.$Export['ClientVersion'].'</a></td>'.
     68        '<td>'.$Export['UsedCount'].'</td>'.
     69        '<td>'.$Action.'</td></tr>';
     70    }
     71    $Output .= '</table>'.
     72        $PageList['Output'];
     73
     74    $Output .= '<div style="text-align: center;"><a href="'.$this->System->Link('/export/').'">Stránka exportů</a></div>';
     75    return($Output);
     76  }
     77
     78  function ShowLastTranslated()
     79  {
     80    $Count = 20;
     81    $Output = '<strong>Poslední překlady:</strong>';
     82
     83    $GroupListQuery = 'SELECT `Group`.* FROM `Group`';
     84    $Query = '';
     85    $UnionItems = array();
     86    $DbResult = $this->Database->query($GroupListQuery);
     87    if($DbResult->num_rows > 0)
     88    {
     89      while($DbRow = $DbResult->fetch_assoc())
     90      {
     91        $UnionItems[] = 'SELECT `T`.`ID`, `T`.`Take`, `T`.`User`, `T`.`ModifyTime`, `T`.`Group`, `T`.`GroupName` '.
     92          'FROM (SELECT `T`.`User`, `T`.`ID`, `T`.`ModifyTime`, '.
     93          $DbRow['Id'].' AS `Group`, "'.addslashes($DbRow['Name']).'" AS `GroupName`, `T`.`Take` FROM `'.
     94          $DbRow['TablePrefix'].'` AS `T` '.
     95          'WHERE (`T`.`Complete` = 1) AND '.
     96          '(`T`.`Language` != '.$this->System->Config['OriginalLanguage'].') AND '.
     97          '(`T`.`User` = '.($_GET['user'] * 1).') ORDER BY `T`.`ModifyTime` DESC LIMIT '.
     98          $Count.') AS `T`';
     99      }
     100      $Query = 'SELECT `TT`.*, `User`.`Name` AS `UserName`, `User`.`Id` AS `UserId` '.
     101          'FROM ('.implode(' UNION ', $UnionItems).') AS `TT` '.
     102          'JOIN `User` ON `User`.`Id` = `TT`.`User` '.
     103          'ORDER BY `ModifyTime` DESC LIMIT '.$Count;
     104      $DbResult = $this->Database->query($Query);
     105      $Output .= '<table class="BaseTable"><tr>'.
     106        '<th>Datum</th><th>Nový</th><th>Zdroj</th><th>Skupina</th></tr>';
     107      while($DbRow = $DbResult->fetch_assoc())
     108      {
     109        $Output .= '<tr><td>'.HumanDate($DbRow['ModifyTime']).'</td>'.
     110            '<td><a href="form.php?group='.$DbRow['Group'].'&amp;ID='.$DbRow['ID'].'">'.$DbRow['ID'].'</a></td>'.
     111            '<td><a href="form.php?group='.$DbRow['Group'].'&amp;ID='.$DbRow['Take'].'">'.$DbRow['Take'].'</a></td>'.
     112            '<td><a href="TranslationList.php?group='.$DbRow['Group'].'&amp;action=filter">'.$DbRow['GroupName'].'</a></td></tr>';
     113      }
     114      $Output .= '</table>';
     115    }
     116    return($Output);
     117  }
     118
     119  function ShowLastForum()
    120120  {
    121121    $parser = new HTML_BBCodeParser2(array('filters' => array('Basic','Extended','Images','Links','Lists','Email')));
    122         $Count = 20;
    123         $Output = '<strong>Poslední příspěvky ve fóru:</strong>';
    124 
    125                 $Output .= '<div class="shoutbox">';
    126                 $DbResult = $this->System->Database->query('SELECT `ForumText`.`Text`, `ForumText`.`Date`, `ForumText`.`UserName`,`ForumThread`.`Text` as `ThreadName`,`ForumText`.`Thread` FROM `ForumText` JOIN `ForumThread` ON `ForumThread`.`ID` = `ForumText`.`Thread` WHERE `ForumText`.`User` = '.($_GET['user'] * 1).' ORDER BY `ForumText`.`Date` DESC LIMIT '.$Count);
    127                 while($Line = $DbResult->fetch_assoc())
    128                         $Output .= '<div><a href="'.$this->System->Link('/forum/?Thread='.$Line['Thread']).'">'.$Line['ThreadName'].'</a><br /><strong>'.$Line['UserName'].'</strong> ('.HumanDate($Line['Date']).'): '.$parser->qparse($Line['Text']).'</div> ';
    129                 $Output .= '</div>';
    130                 return($Output);
    131   }
    132 
    133         function ShowProfile()
    134         {
    135                 $Output = '';
    136                 $Query = 'SELECT `User`.`Name`, `UserTrace`.`LastLogin`, `UserTrace`.`LastIP`, '.
    137                                 '`User`.`Email`, `UserTrace`.`UserAgent`, `User`.`PreferredVersion`, '.
    138                                 '`User`.`TranslatedCount`, `User`.`Team`, `User`.`ID`, `User`.`Info`, '.
    139                                 '`Team`.`Name` AS `TeamName`, `Language`.`Name` AS `LanguageName`, '.
    140                                 '`ClientVersion`.`Version` AS `Version` FROM `User` '.
    141                                 'LEFT JOIN `UserTrace` ON `UserTrace`.`User` = `User`.`Id` '.
    142                                 'LEFT JOIN `Language` ON `Language`.`Id` = `User`.`Language` '.
    143                                 'LEFT JOIN `Team` ON `Team`.`Id` = `User`.`Team` '.
    144                                 'LEFT JOIN `ClientVersion` ON `ClientVersion`.`Id` = `User`.`PreferredVersion` '.
    145                                 'WHERE `User`.`Id` = '.($_GET['user'] * 1);
    146                 $DbResult = $this->Database->query($Query);
    147                 if($DbResult->num_rows > 0)
    148                 {
    149                 $UserLine = $DbResult->fetch_array();
    150 
    151                 $Output .=
    152                 '<h3>Překladatel '.$UserLine['Name'].'</h3>'.
    153                 'Výchozí jazyk: <strong>'.$UserLine['LanguageName'].'</strong><br />'.
    154                 'Výchozí verze klienta: <a href="'.$this->System->Link('/client-version/?action=item&amp;id='.$UserLine['PreferredVersion']).'"><strong>'.$UserLine['Version'].'</strong></a><br />'.
    155                 'Poslední připojení: <strong>'.HumanDateTime($UserLine['LastLogin']).'</strong><br />'.
    156                 'Počet přeložených: <a href="TranslationList.php?user='.$UserLine['ID'].'&amp;state=2&amp;group=0" title="Zobrazit Všechny jeho přeložené texty"><strong>'.$UserLine['TranslatedCount'].'</strong></a><br />';
    157                 if($UserLine['TeamName'] != '')
    158                         $Output .= 'Člen týmu: <a href="team/?action=team&amp;id='.$UserLine['Team'].'"><strong>'.$UserLine['TeamName'].'</strong></a><br />';
    159                 //user tags
    160                 $Query = 'SELECT * FROM `UserTag` '.
     122    $Count = 20;
     123    $Output = '<strong>Poslední příspěvky ve fóru:</strong>';
     124
     125    $Output .= '<div class="shoutbox">';
     126    $DbResult = $this->System->Database->query('SELECT `ForumText`.`Text`, `ForumText`.`Date`, `ForumText`.`UserName`,`ForumThread`.`Text` as `ThreadName`,`ForumText`.`Thread` FROM `ForumText` JOIN `ForumThread` ON `ForumThread`.`ID` = `ForumText`.`Thread` WHERE `ForumText`.`User` = '.($_GET['user'] * 1).' ORDER BY `ForumText`.`Date` DESC LIMIT '.$Count);
     127    while($Line = $DbResult->fetch_assoc())
     128      $Output .= '<div><a href="'.$this->System->Link('/forum/?Thread='.$Line['Thread']).'">'.$Line['ThreadName'].'</a><br /><strong>'.$Line['UserName'].'</strong> ('.HumanDate($Line['Date']).'): '.$parser->qparse($Line['Text']).'</div> ';
     129    $Output .= '</div>';
     130    return($Output);
     131  }
     132
     133  function ShowProfile()
     134  {
     135    $Output = '';
     136    $Query = 'SELECT `User`.`Name`, `UserTrace`.`LastLogin`, `UserTrace`.`LastIP`, '.
     137        '`User`.`Email`, `UserTrace`.`UserAgent`, `User`.`PreferredVersion`, '.
     138        '`User`.`TranslatedCount`, `User`.`Team`, `User`.`ID`, `User`.`Info`, '.
     139        '`Team`.`Name` AS `TeamName`, `Language`.`Name` AS `LanguageName`, '.
     140        '`ClientVersion`.`Version` AS `Version` FROM `User` '.
     141        'LEFT JOIN `UserTrace` ON `UserTrace`.`User` = `User`.`Id` '.
     142        'LEFT JOIN `Language` ON `Language`.`Id` = `User`.`Language` '.
     143        'LEFT JOIN `Team` ON `Team`.`Id` = `User`.`Team` '.
     144        'LEFT JOIN `ClientVersion` ON `ClientVersion`.`Id` = `User`.`PreferredVersion` '.
     145        'WHERE `User`.`Id` = '.($_GET['user'] * 1);
     146    $DbResult = $this->Database->query($Query);
     147    if($DbResult->num_rows > 0)
     148    {
     149    $UserLine = $DbResult->fetch_array();
     150
     151    $Output .=
     152    '<h3>Překladatel '.$UserLine['Name'].'</h3>'.
     153    'Výchozí jazyk: <strong>'.$UserLine['LanguageName'].'</strong><br />'.
     154    'Výchozí verze klienta: <a href="'.$this->System->Link('/client-version/?action=item&amp;id='.$UserLine['PreferredVersion']).'"><strong>'.$UserLine['Version'].'</strong></a><br />'.
     155    'Poslední připojení: <strong>'.HumanDateTime($UserLine['LastLogin']).'</strong><br />'.
     156    'Počet přeložených: <a href="TranslationList.php?user='.$UserLine['ID'].'&amp;state=2&amp;group=0" title="Zobrazit Všechny jeho přeložené texty"><strong>'.$UserLine['TranslatedCount'].'</strong></a><br />';
     157    if($UserLine['TeamName'] != '')
     158      $Output .= 'Člen týmu: <a href="team/?action=team&amp;id='.$UserLine['Team'].'"><strong>'.$UserLine['TeamName'].'</strong></a><br />';
     159    //user tags
     160    $Query = 'SELECT * FROM `UserTag` '.
    161161     'LEFT JOIN `UserTagType` ON `UserTagType`.`ID` = `UserTag`.`UserTagType` '.
    162162     'WHERE `User` = '.($_GET['user'] * 1);
    163                 $DbResult = $this->Database->query($Query);
     163    $DbResult = $this->Database->query($Query);
    164164    if ($DbResult->num_rows != 0) {
    165165      $Output .= 'Překladatel se řídí těmito pravidly:<br />';
     
    174174    $Output .= '<br /><fieldset><legend>Text profilu:</legend>'.str_replace("\n", '<br/>', $UserLine['Info']).'</fieldset><br/>';
    175175
    176         $Output .= '<table class="Home"><tr>'.
    177                         '<td>'.$this->ShowLastTranslated().'</td>'.
    178                         '<td>'.$this->ExportList().'</td>'.
    179                         '</tr></table>';
    180                 $Output .= '<br />'.$this->ShowLastForum().'<br />';
    181                 if($this->System->User->Licence(LICENCE_MODERATOR))
    182         {
    183                         $Output .= '<fieldset><legend>Moderování</legend>';
     176    $Output .= '<table class="Home"><tr>'.
     177        '<td>'.$this->ShowLastTranslated().'</td>'.
     178        '<td>'.$this->ExportList().'</td>'.
     179        '</tr></table>';
     180    $Output .= '<br />'.$this->ShowLastForum().'<br />';
     181    if($this->System->User->Licence(LICENCE_MODERATOR))
     182  {
     183      $Output .= '<fieldset><legend>Moderování</legend>';
    184184
    185185      $Output .= '<form action="?user='.($_GET['user'] * 1).'" method="post">Přidání tagu uživateli:<br />';
    186                   $Query = 'SELECT * FROM UserTagType';
    187                   $DbResult = $this->Database->query($Query);
     186      $Query = 'SELECT * FROM UserTagType';
     187      $DbResult = $this->Database->query($Query);
    188188      while ($UserTag = $DbResult->fetch_array()) {
    189189        //save:
    190190       if (array_key_exists('save', $_POST)) {
    191191        if (array_key_exists('Tag'.$UserTag['ID'], $_POST)) {
    192                     $Query = 'SELECT * FROM `UserTag` '.
     192          $Query = 'SELECT * FROM `UserTag` '.
    193193          'WHERE `UserTagType` = '.$UserTag['ID'].' AND `User` = '.($_GET['user']*1);
    194                   $DbResult2 = $this->Database->query($Query);
     194          $DbResult2 = $this->Database->query($Query);
    195195          if ($DbResult2->num_rows == 0) {
    196                     $Query = 'INSERT INTO `UserTag` (`ID` ,`UserTagType`,`User` ) '.
     196            $Query = 'INSERT INTO `UserTag` (`ID` ,`UserTagType`,`User` ) '.
    197197            'VALUES (NULL, '.$UserTag['ID'].' , '.($_GET['user']*1).')';
    198                 $DbResult2 = $this->Database->query($Query);
     198            $DbResult2 = $this->Database->query($Query);
    199199          }
    200200        } else {
    201                    $Query = 'DELETE FROM `UserTag` '.
     201           $Query = 'DELETE FROM `UserTag` '.
    202202           'WHERE `UserTagType` = '.$UserTag['ID'].' AND `User` = '.($_GET['user'] * 1);
    203                        $DbResult2 = $this->Database->query($Query);
     203           $DbResult2 = $this->Database->query($Query);
    204204        }
    205205       }
    206206
    207                     $Query = 'SELECT * FROM `UserTag` '.
     207        $Query = 'SELECT * FROM `UserTag` '.
    208208        'WHERE `UserTagType` = '.$UserTag['ID'].' AND `User` = '.($_GET['user'] * 1);
    209                     $DbResult2 = $this->Database->query($Query);
     209        $DbResult2 = $this->Database->query($Query);
    210210        if ($DbResult2->num_rows != 0) $checked = true;
    211211        else  $checked = false;
     
    216216      $Output .= '<input name="save" type="submit" value="Uložit" /></form>';
    217217
    218                         $Output .= ' PosledníIP: <strong>'.$UserLine['LastIP'].'</strong><br />'.
    219                                         'Prohlížeč: <strong>'.$UserLine['UserAgent'].'</strong><br />'.
    220                                         'Email: <strong>'.$UserLine['Email'].'</strong><br />';
    221                         $Output .= '<br/><form action="user.php" method="post"><div>'.
    222                                         'Napsat E-mail:'.
    223                                         '<input type="text" name="email" value="'.$UserLine['Email'].'" /><br/>'.
    224                                         'Předmět:'.
    225                                         '<input type="text" name="subject" value="'.$this->System->Config['Web']['Title'].'" />'.
    226                                         '<br />'.
    227                                         '<textarea name="text" rows="20" cols="62">'.
    228                                         ''."\n".
    229                                         'S pozdravem '.$this->System->User->Name."\n".
    230                                         '--------------------------------------------------------'."\n".
    231                                         $this->System->Config['Web']['Title'].' '.$this->System->Config['Web']['Host'].$this->System->Link('/')."\n".
    232                                         '</textarea><br/>'.
    233                                         '<input type="submit" value="Odeslat" />'.
    234                                         '</div></form></fieldset>';
    235                 }
    236                 } else $Output .= ShowMessage('Uživatel nenalezen', MESSAGE_CRITICAL);
    237                 return($Output);
    238         }
    239 
    240         function Show()
    241         {
    242                 $this->Title = T('User profile');
    243                 $Output = $this->SendMail();
    244                 if(array_key_exists('user', $_GET))
    245                 {
    246                         $Output .= $this->ShowProfile();
    247                 } else $Output .= ShowMessage('Nevybrán uživatel', MESSAGE_CRITICAL);
    248                 return($Output);
    249         }
     218      $Output .= ' PosledníIP: <strong>'.$UserLine['LastIP'].'</strong><br />'.
     219          'Prohlížeč: <strong>'.$UserLine['UserAgent'].'</strong><br />'.
     220          'Email: <strong>'.$UserLine['Email'].'</strong><br />';
     221      $Output .= '<br/><form action="user.php" method="post"><div>'.
     222          'Napsat E-mail:'.
     223          '<input type="text" name="email" value="'.$UserLine['Email'].'" /><br/>'.
     224          'Předmět:'.
     225          '<input type="text" name="subject" value="'.$this->System->Config['Web']['Title'].'" />'.
     226          '<br />'.
     227          '<textarea name="text" rows="20" cols="62">'.
     228          ''."\n".
     229          'S pozdravem '.$this->System->User->Name."\n".
     230          '--------------------------------------------------------'."\n".
     231          $this->System->Config['Web']['Title'].' '.$this->System->Config['Web']['Host'].$this->System->Link('/')."\n".
     232          '</textarea><br/>'.
     233          '<input type="submit" value="Odeslat" />'.
     234          '</div></form></fieldset>';
     235    }
     236    } else $Output .= ShowMessage('Uživatel nenalezen', MESSAGE_CRITICAL);
     237    return($Output);
     238  }
     239
     240  function Show()
     241  {
     242    $this->Title = T('User profile');
     243    $Output = $this->SendMail();
     244    if(array_key_exists('user', $_GET))
     245    {
     246      $Output .= $this->ShowProfile();
     247    } else $Output .= ShowMessage('Nevybrán uživatel', MESSAGE_CRITICAL);
     248    return($Output);
     249  }
    250250}
  • trunk/Modules/User/Registration.php

    r801 r816  
    33class PageUserRegistration extends Page
    44{
    5         function ShowForm()
    6         {
    7                 if(array_key_exists('sc', $_POST)) $Human = true;
     5  function ShowForm()
     6  {
     7    if(array_key_exists('sc', $_POST)) $Human = true;
    88      else $Human = false;
    9                 if(array_key_exists('user', $_POST)) $UserName = $_POST['user'];
    10                 else $UserName = '';
    11                 if(array_key_exists('Email', $_POST)) $Email = $_POST['Email'];
    12                 else $Email = '';
    13                 if(array_key_exists('Team', $_POST)) $Team = $_POST['Team'];
    14                 else $Team = '';
    15                 if(array_key_exists('Language', $_POST)) $Language = $_POST['Language'];
    16                 else $Language = 1;
     9    if(array_key_exists('user', $_POST)) $UserName = $_POST['user'];
     10    else $UserName = '';
     11    if(array_key_exists('Email', $_POST)) $Email = $_POST['Email'];
     12    else $Email = '';
     13    if(array_key_exists('Team', $_POST)) $Team = $_POST['Team'];
     14    else $Team = '';
     15    if(array_key_exists('Language', $_POST)) $Language = $_POST['Language'];
     16    else $Language = 1;
    1717
    18                 $Output = '<form action="?" method="post">
    19                 <fieldset><legend>'.T('New user registration').'</legend>
    20                 <table>
    21                 <tr><td colspan="2">Pozorně si přečtěte <a href="info.php">pokyny k překladu</a> a řiďte se jimi. Překládat je nutno včetně háčků a čárek!<br/><br/></td></tr>
    22                 <tr>
    23                 <td>Jsi člověk? </td>';
    24                 if($Human) $Checked = ' checked="checked"';
    25                 else $Checked = '';
    26                 $Output .= '<td><input type="checkbox" name="sc" '.$Checked.'/></td>
    27                 </tr>
    28                 <tr>
    29                 <td>Jméno:</td>
    30                 <td><input type="text" name="user" value="'.$UserName.'"/></td>
    31                 </tr>
    32                 <tr>
    33                 <td>Heslo:</td>
    34                 <td><input type="password" name="pass" /></td>
    35                 </tr>
    36                 <tr>
    37                 <td>Potvrzení Hesla: </td>
    38                 <td><input type="password" name="pass2" /></td>
    39                 </tr>
    40                 <tr>
    41                 <td>Email: </td>
    42                 <td><input type="text" name="Email" value="'.$Email.'"/></td>
    43                 </tr>
    44                 <tr>
    45                 <td>Normálně budu překládat do: </td>
    46                 <td>'.WriteLanguages($Language).'</td>
    47                 </tr>
    48                 <tr>
    49                 <td>Patřím do týmu: </td>';
    50                 if($Team == '') $Selected = ' selected="selected"';
    51                 else $Selected = '';
    52                 $Output .= '<td><select name="Team"><option value="0"'.$Selected.'>Žádného</option>
    53                 ';
    54                 $DbResult = $this->Database->query('SELECT `Name`, `Id` FROM `Team`');
    55                 while($Line = $DbResult->fetch_assoc())
    56                 {
    57                         if($Team == $Line['Id']) $Selected = ' selected="selected"';
    58                         else $Selected = '';
    59                         $Output .= '<option value="0'.$Line['Id'].'"'.$Selected.'>'.$Line['Name'].'</option>';
    60                 }
    61                 $Output .= '</select></td>
    62                 </tr>';
    63                 $Output .= '</td></tr>'.
    64                                 '<tr><td>Upřednostněná verze klienta: </td><td>'.ClientVersionSelection('').'</td></tr>';
     18    $Output = '<form action="?" method="post">
     19    <fieldset><legend>'.T('New user registration').'</legend>
     20    <table>
     21    <tr><td colspan="2">Pozorně si přečtěte <a href="info.php">pokyny k překladu</a> a řiďte se jimi. Překládat je nutno včetně háčků a čárek!<br/><br/></td></tr>
     22    <tr>
     23    <td>Jsi člověk? </td>';
     24    if($Human) $Checked = ' checked="checked"';
     25    else $Checked = '';
     26    $Output .= '<td><input type="checkbox" name="sc" '.$Checked.'/></td>
     27    </tr>
     28    <tr>
     29    <td>Jméno:</td>
     30    <td><input type="text" name="user" value="'.$UserName.'"/></td>
     31    </tr>
     32    <tr>
     33    <td>Heslo:</td>
     34    <td><input type="password" name="pass" /></td>
     35    </tr>
     36    <tr>
     37    <td>Potvrzení Hesla: </td>
     38    <td><input type="password" name="pass2" /></td>
     39    </tr>
     40    <tr>
     41    <td>Email: </td>
     42    <td><input type="text" name="Email" value="'.$Email.'"/></td>
     43    </tr>
     44    <tr>
     45    <td>Normálně budu překládat do: </td>
     46    <td>'.WriteLanguages($Language).'</td>
     47    </tr>
     48    <tr>
     49    <td>Patřím do týmu: </td>';
     50    if($Team == '') $Selected = ' selected="selected"';
     51    else $Selected = '';
     52    $Output .= '<td><select name="Team"><option value="0"'.$Selected.'>Žádného</option>
     53    ';
     54    $DbResult = $this->Database->query('SELECT `Name`, `Id` FROM `Team`');
     55    while($Line = $DbResult->fetch_assoc())
     56    {
     57      if($Team == $Line['Id']) $Selected = ' selected="selected"';
     58      else $Selected = '';
     59      $Output .= '<option value="0'.$Line['Id'].'"'.$Selected.'>'.$Line['Name'].'</option>';
     60    }
     61    $Output .= '</select></td>
     62    </tr>';
     63    $Output .= '</td></tr>'.
     64        '<tr><td>Upřednostněná verze klienta: </td><td>'.ClientVersionSelection('').'</td></tr>';
    6565
    6666        $Output .= '<tr><td>';
    67                 $Query = 'SELECT * FROM UserTagType';
    68                 $DbResult = $this->Database->query($Query);
     67    $Query = 'SELECT * FROM UserTagType';
     68    $DbResult = $this->Database->query($Query);
    6969    $Output .= 'Vyberte pravidla, kterými se při překladu chcete řídit:</td><td>';
    7070    while ($UserTag = $DbResult->fetch_array()) {
    71                   $checked = false;
     71      $checked = false;
    7272
    7373      $Output .= CheckBox('Tag'.$UserTag['ID'], $checked, 'CheckBox');
     
    7777
    7878    $Output .= '<tr>
    79                 <th><input type="submit" value="Registrovat" /></th>
    80                 </tr>
    81                 </table></fieldset></form>';
    82                 return($Output);
    83         }
     79    <th><input type="submit" value="Registrovat" /></th>
     80    </tr>
     81    </table></fieldset></form>';
     82    return($Output);
     83  }
    8484
    8585  function CheckRegistration()
     
    157157  }
    158158
    159         function Show()
    160         {
    161           $this->Title = T('User registration');
    162                 $Output = '';
    163                 if(array_key_exists('user', $_POST))
    164                 {
     159  function Show()
     160  {
     161    $this->Title = T('User registration');
     162    $Output = '';
     163    if(array_key_exists('user', $_POST))
     164    {
    165165      $Output .= $this->CheckRegistration();
    166                 } else $Output .= $this->ShowForm();
    167                 return($Output);
    168         }
     166    } else $Output .= $this->ShowForm();
     167    return($Output);
     168  }
    169169}
  • trunk/Modules/User/User.php

    r805 r816  
    88class ModuleUser extends AppModule
    99{
    10         function __construct($System)
    11         {
    12                 parent::__construct($System);
    13                 $this->Name = 'User';
    14                 $this->Version = '1.1';
    15                 $this->Creator = 'Chronos';
    16                 $this->License = 'GNU/GPL';
    17                 $this->Description = 'User and permission management';
    18                 $this->Dependencies = array();
    19         }
    20 
    21         function Start()
    22         {
    23                 $this->System->User = new User($this->System);
     10  function __construct($System)
     11  {
     12    parent::__construct($System);
     13    $this->Name = 'User';
     14    $this->Version = '1.1';
     15    $this->Creator = 'Chronos';
     16    $this->License = 'GNU/GPL';
     17    $this->Description = 'User and permission management';
     18    $this->Dependencies = array();
     19  }
     20
     21  function Start()
     22  {
     23    $this->System->User = new User($this->System);
    2424    $this->System->RegisterPage('userlist.php', 'PageUserList');
    25                 $this->System->RegisterPage('Options.php', 'PageUserOptions');
    26                 $this->System->RegisterPage('registrace.php', 'PageUserRegistration');
    27                 $this->System->RegisterPage('user.php', 'PageUserProfile');
    28                 $this->System->RegisterPage('login', 'PageUserLogin');
    29                 $this->System->RegisterMenuItem(array(
    30         'Title' => T('Translators'),
    31         'Hint' => 'Seznam registrovaných uživatelů',
    32         'Link' => $this->System->Link('/userlist.php'),
    33         'Permission' => LICENCE_ANONYMOUS,
    34         'Icon' => '',
     25    $this->System->RegisterPage('Options.php', 'PageUserOptions');
     26    $this->System->RegisterPage('registrace.php', 'PageUserRegistration');
     27    $this->System->RegisterPage('user.php', 'PageUserProfile');
     28    $this->System->RegisterPage('login', 'PageUserLogin');
     29    $this->System->RegisterMenuItem(array(
     30      'Title' => T('Translators'),
     31      'Hint' => 'Seznam registrovaných uživatelů',
     32      'Link' => $this->System->Link('/userlist.php'),
     33      'Permission' => LICENCE_ANONYMOUS,
     34      'Icon' => '',
    3535    ), 0);
    3636    if(array_key_exists('Search', $this->System->ModuleManager->Modules))
    3737      $this->System->ModuleManager->Modules['Search']->RegisterSearch('user',
    3838      T('Translators'), array('Name'), '`User`', $this->System->Link('/userlist.php?search='));
    39         }
    40 
    41         function ShowOnlineList()
    42         {
    43                 $Output = T('Online translators').':<br />';
    44                 $DbResult = $this->System->Database->query('SELECT * FROM ('.
     39  }
     40
     41  function ShowOnlineList()
     42  {
     43    $Output = T('Online translators').':<br />';
     44    $DbResult = $this->System->Database->query('SELECT * FROM ('.
    4545'SELECT `User`.`Name`, `User`.`ID` FROM `UserOnline` '.
    46                                 'JOIN `User` ON `User`.`ID` = `UserOnline`.`User` '.
    47                                 'WHERE (`ActivityTime` >= NOW() - 300) '.
    48                                 'ORDER BY `ActivityTime` DESC ) AS `T` GROUP BY `Name`');
    49                 while($DbUser = $DbResult->fetch_assoc())
    50                 {
    51                         $Name = '<a href="'.$this->System->Link('/user.php?user='.$DbUser['ID']).'">'.$DbUser['Name'].'</a>';
    52                         $Output .= $Name.'<br />';
    53                 }
    54                 return($Output);
    55         }
     46        'JOIN `User` ON `User`.`ID` = `UserOnline`.`User` '.
     47        'WHERE (`ActivityTime` >= NOW() - 300) '.
     48        'ORDER BY `ActivityTime` DESC ) AS `T` GROUP BY `Name`');
     49    while($DbUser = $DbResult->fetch_assoc())
     50    {
     51      $Name = '<a href="'.$this->System->Link('/user.php?user='.$DbUser['ID']).'">'.$DbUser['Name'].'</a>';
     52      $Output .= $Name.'<br />';
     53    }
     54    return($Output);
     55  }
    5656}
    5757
    5858class PageUserLogin extends Page
    5959{
    60         function Show()
    61         {
    62                 $Output = '<form action="'.$this->System->Link('/?action=login').'" method="post">'.
    63                         '<fieldset><legend>'.T('Login').'</legend>
    64                         <table>
    65                         <tr>
    66                         <td>'.T('Name').':</td><td><input type="text" name="LoginUser" size="13" /></td>
    67                         </tr>
    68                         <tr>
    69                         <td>'.T('Password').':</td><td><input type="password" name="LoginPass" size="13" /></td>
    70                         </tr>
    71                         <tr>
    72                         <td>'.T('Stay logged').':</td><td><input type="checkbox" name="StayLogged" /></td>
    73                         </tr>
    74                         <tr>
    75                         <th><input type="submit" value="'.T('Do login').'" /></th>
    76                         </tr>
    77                         </table>
    78                         </fieldset></form>';
    79                         return($Output);
    80         }
     60  function Show()
     61  {
     62    $Output = '<form action="'.$this->System->Link('/?action=login').'" method="post">'.
     63      '<fieldset><legend>'.T('Login').'</legend>
     64      <table>
     65      <tr>
     66      <td>'.T('Name').':</td><td><input type="text" name="LoginUser" size="13" /></td>
     67      </tr>
     68      <tr>
     69      <td>'.T('Password').':</td><td><input type="password" name="LoginPass" size="13" /></td>
     70      </tr>
     71      <tr>
     72      <td>'.T('Stay logged').':</td><td><input type="checkbox" name="StayLogged" /></td>
     73      </tr>
     74      <tr>
     75      <th><input type="submit" value="'.T('Do login').'" /></th>
     76      </tr>
     77      </table>
     78      </fieldset></form>';
     79      return($Output);
     80  }
    8181}
    8282
     
    114114  function Login($Name, $Password, $StayLogged = false)
    115115  {
    116         $SID = session_id();
     116    $SID = session_id();
    117117    $DbResult = $this->Database->query('SELECT `ID` FROM `User` WHERE '.
    118118      'LOWER(`Name`) = LOWER("'.$Name.'") AND `Pass` = '.$this->CryptPasswordSQL('"'.$Password.'"', '`Salt`'));
     
    147147  function Logout()
    148148  {
    149         $SID = session_id();
     149    $SID = session_id();
    150150    if($this->Role != LICENCE_ANONYMOUS)
    151151    {
     
    162162    $DbResult = $this->Database->query('SELECT `User`.`PreferredVersion`,`User`.`ID`,`User`.`Team`,`User`.`Redirecting`,`User`.`Email`,`User`.`Info`,'.
    163163    '`User`.`Language`,`User`.`Name`,`User`.`GM`,`ClientVersion`.`Version` AS `PreferredVersionGame` FROM `User` '.
    164                 'LEFT JOIN `ClientVersion` ON `ClientVersion`.`Id` = `User`.`PreferredVersion` '.
     164    'LEFT JOIN `ClientVersion` ON `ClientVersion`.`Id` = `User`.`PreferredVersion` '.
    165165    'WHERE `User`.`ID` = '.$this->Id);
    166166    if($DbResult->num_rows > 0)
     
    230230      $this->Database->update('UserOnline', 'SessionId="'.$SID.'"', array('ActivityTime' => 'NOW()'));
    231231    } else {
    232         if(GetRemoteAddress() != '') $HostName = gethostbyaddr(GetRemoteAddress());
    233           else $HostName = '';
    234         $this->Database->insert('UserOnline', array('SessionId' => $SID,
     232      if(GetRemoteAddress() != '') $HostName = gethostbyaddr(GetRemoteAddress());
     233        else $HostName = '';
     234      $this->Database->insert('UserOnline', array('SessionId' => $SID,
    235235      'User' => null, 'LoginTime' => 'NOW()', 'ActivityTime' => 'NOW()',
    236236      'IpAddress' => GetRemoteAddress(), 'HostName' => $HostName,
    237237      'ScriptName' => GetRequestURI()));
    238238    }
    239        
     239
    240240    // Logged permanently?
    241           if(array_key_exists('LoginHash', $_COOKIE))
    242           {
    243             $DbResult = $this->Database->query('SELECT * FROM `UserOnline` WHERE `User`='.$_COOKIE['LoginUserId'].
    244               ' AND `StayLogged`=1 AND SessionId!="'.$SID.'"');
    245             if($DbResult->num_rows > 0)
    246             {
    247               $DbRow = $DbResult->fetch_assoc();
    248               if(sha1($_COOKIE['LoginUserId'].$DbRow['StayLoggedHash']) == $_COOKIE['LoginHash'])
    249               {
    250                 $this->Database->query('DELETE FROM `UserOnline` WHERE `SessionId`="'.$SID.'"');
    251                 $this->Database->query('UPDATE `UserOnline` SET `SessionId`="'.$SID.'" WHERE `Id`='.$DbRow['Id']);
    252               }
    253             }
    254     }
    255 
    256           // Check login
     241    if(array_key_exists('LoginHash', $_COOKIE))
     242    {
     243      $DbResult = $this->Database->query('SELECT * FROM `UserOnline` WHERE `User`='.$_COOKIE['LoginUserId'].
     244        ' AND `StayLogged`=1 AND SessionId!="'.$SID.'"');
     245      if($DbResult->num_rows > 0)
     246      {
     247        $DbRow = $DbResult->fetch_assoc();
     248        if(sha1($_COOKIE['LoginUserId'].$DbRow['StayLoggedHash']) == $_COOKIE['LoginHash'])
     249        {
     250          $this->Database->query('DELETE FROM `UserOnline` WHERE `SessionId`="'.$SID.'"');
     251          $this->Database->query('UPDATE `UserOnline` SET `SessionId`="'.$SID.'" WHERE `Id`='.$DbRow['Id']);
     252        }
     253      }
     254    }
     255
     256    // Check login
    257257    $Query = $this->Database->select('UserOnline', '*', '`SessionId`="'.$SID.'"');
    258258    $Row = $Query->fetch_assoc();
    259259    if($Row['User'] != '')
    260260    {
    261         $this->Id = $Row['User'];
     261      $this->Id = $Row['User'];
    262262      $this->Load();
    263263    } else
  • trunk/Modules/User/UserList.php

    r637 r816  
    55class PageUserList extends Page
    66{
    7         function Show()
    8         {
    9                 $this->Title = T('Translators');
    10                 ImgLevelUpdate();
    11        
    12                 $Output = '';
    13                 if(array_key_exists('search', $_GET)) $_SESSION['search'] = $_GET['search'];
    14                 else if(!array_key_exists('search', $_SESSION)) $_SESSION['search'] = '';
    15                 if(array_key_exists('search', $_GET) and ($_GET['search'] == '')) $_SESSION['search'] = '';
    16                 if($_SESSION['search'] != '')
    17                 {
    18                         $SearchQuery = ' AND (`User`.`Name` LIKE "%'.$_SESSION['search'].'%")';
    19                         $Output .= '<div><a href="?search=">'.sprintf(T('Disable filter "%s"'), $_SESSION['search']).'</a></div>';
    20                 } else $SearchQuery = '';                       
     7  function Show()
     8  {
     9    $this->Title = T('Translators');
     10    ImgLevelUpdate();
     11
     12    $Output = '';
     13    if(array_key_exists('search', $_GET)) $_SESSION['search'] = $_GET['search'];
     14    else if(!array_key_exists('search', $_SESSION)) $_SESSION['search'] = '';
     15    if(array_key_exists('search', $_GET) and ($_GET['search'] == '')) $_SESSION['search'] = '';
     16    if($_SESSION['search'] != '')
     17    {
     18      $SearchQuery = ' AND (`User`.`Name` LIKE "%'.$_SESSION['search'].'%")';
     19      $Output .= '<div><a href="?search=">'.sprintf(T('Disable filter "%s"'), $_SESSION['search']).'</a></div>';
     20    } else $SearchQuery = '';
    2121
    2222    $TeamFilter = '';
    23                 if(array_key_exists('team', $_GET))
    24                 {
    25                         $TeamId = $_GET['team'] * 1;
    26                         $DbResult = $this->Database->select('Team', 'Name', 'Id='.$TeamId);
    27                         if($DbResult->num_rows > 0)
    28                         {
    29                                 $Team = $DbResult->fetch_assoc();
    30                                 $Output .= '<h3>'.sprintf(T('Users in team %s'), $Team['Name']).'</h3>';
    31                                 $TeamFilter = ' AND (`Team`='.$_GET['team'].')';
    32                         } else {
    33                   $Output .= ShowMessage(sprintf(T('Team %d not found'), $TeamId), MESSAGE_CRITICAL);
    34                         }
    35                 } else
    36                 {
    37                         $Output .= '<h3>'.T('User list').'</h3>';
    38                 }
    39        
    40                 $DbResult = $this->Database->query('SELECT COUNT(*) FROM `User` WHERE 1'.$SearchQuery.$TeamFilter);
    41                 $DbRow = $DbResult->fetch_row();
    42                 $PageList = GetPageList($DbRow[0]);
    43        
    44                 $Output .= $PageList['Output'].
    45                 '<table class="BaseTable">';
    46        
    47                 $TableColumns = array(
    48                         array('Name' => 'Name', 'Title' => T('Name')),
    49                         array('Name' => 'TranslatedCount', 'Title' => T('Translated count')),
    50                         array('Name' => 'XP', 'Title' => T('Level')),
    51                         array('Name' => 'XP', 'Title' => T('Experience')),
    52                         //array('Name' => 'GM', 'Title' => T('GM')),
    53                         array('Name' => 'LastLogin', 'Title' => T('Last logged in')),
    54                         array('Name' => 'RegistrationTime', 'Title' => T('Registration time')),
    55                 );
    56                 $Order = GetOrderTableHeader($TableColumns, 'TranslatedCount', 1);
    57                 $Output .= $Order['Output'];   
    58        
    59                 $Query = 'SELECT `User`.`ID`, `User`.`Name`, `LastLogin`, `GM`, `XP`, `TranslatedCount`, `RegistrationTime` '.
    60                                 'FROM `User` '.
    61                                 'LEFT JOIN `UserTrace` ON `UserTrace`.`User` = `User`.`Id` '.
    62                                 'WHERE 1'.$SearchQuery.$TeamFilter.$Order['SQL'].$PageList['SQLLimit'];
    63        
    64                 $DbResult = $this->Database->query($Query);
    65                 while($Line = $DbResult->fetch_assoc())
    66                 {
    67                         $XP = GetLevelMinMax($Line['XP']);
    68                         $Output .= '<tr><td><a href="user.php?user='.$Line['ID'].'">'.$Line['Name'].'</a></td>'.
    69                                         '<td style="text-align: center;"><a href="TranslationList.php?user='.$Line['ID'].'&amp;group=0&amp;state=2" title="Zobrazit Všechny jeho přeložené texty">'.$Line['TranslatedCount'].'</a></td>'.
    70                                         '<td>'.$XP['Level'].'</td>'.
    71                                         '<td>'.ProgressBar(150, round($XP['XP'] / $XP['MaxXP'] * 100, 2), $XP['XP'].' / '.$XP['MaxXP']).'</td>'.
    72                                         //<td>'.$Moderators[$Line['GM']].'</td>
    73                         '<td>'.HumanDate($Line['LastLogin']).'</td>'.
    74                         '<td>'.HumanDate($Line['RegistrationTime']).'</td></tr>';
    75                 }
    76                 $Output .= '</table>'.
    77                                 $PageList['Output'];
    78        
    79                 return($Output);
    80         }       
     23    if(array_key_exists('team', $_GET))
     24    {
     25      $TeamId = $_GET['team'] * 1;
     26      $DbResult = $this->Database->select('Team', 'Name', 'Id='.$TeamId);
     27      if($DbResult->num_rows > 0)
     28      {
     29        $Team = $DbResult->fetch_assoc();
     30        $Output .= '<h3>'.sprintf(T('Users in team %s'), $Team['Name']).'</h3>';
     31        $TeamFilter = ' AND (`Team`='.$_GET['team'].')';
     32      } else {
     33        $Output .= ShowMessage(sprintf(T('Team %d not found'), $TeamId), MESSAGE_CRITICAL);
     34      }
     35    } else
     36    {
     37      $Output .= '<h3>'.T('User list').'</h3>';
     38    }
     39
     40    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `User` WHERE 1'.$SearchQuery.$TeamFilter);
     41    $DbRow = $DbResult->fetch_row();
     42    $PageList = GetPageList($DbRow[0]);
     43
     44    $Output .= $PageList['Output'].
     45    '<table class="BaseTable">';
     46
     47    $TableColumns = array(
     48      array('Name' => 'Name', 'Title' => T('Name')),
     49      array('Name' => 'TranslatedCount', 'Title' => T('Translated count')),
     50      array('Name' => 'XP', 'Title' => T('Level')),
     51      array('Name' => 'XP', 'Title' => T('Experience')),
     52      //array('Name' => 'GM', 'Title' => T('GM')),
     53      array('Name' => 'LastLogin', 'Title' => T('Last logged in')),
     54      array('Name' => 'RegistrationTime', 'Title' => T('Registration time')),
     55    );
     56    $Order = GetOrderTableHeader($TableColumns, 'TranslatedCount', 1);
     57    $Output .= $Order['Output'];
     58
     59    $Query = 'SELECT `User`.`ID`, `User`.`Name`, `LastLogin`, `GM`, `XP`, `TranslatedCount`, `RegistrationTime` '.
     60        'FROM `User` '.
     61        'LEFT JOIN `UserTrace` ON `UserTrace`.`User` = `User`.`Id` '.
     62        'WHERE 1'.$SearchQuery.$TeamFilter.$Order['SQL'].$PageList['SQLLimit'];
     63
     64    $DbResult = $this->Database->query($Query);
     65    while($Line = $DbResult->fetch_assoc())
     66    {
     67      $XP = GetLevelMinMax($Line['XP']);
     68      $Output .= '<tr><td><a href="user.php?user='.$Line['ID'].'">'.$Line['Name'].'</a></td>'.
     69          '<td style="text-align: center;"><a href="TranslationList.php?user='.$Line['ID'].'&amp;group=0&amp;state=2" title="Zobrazit Všechny jeho přeložené texty">'.$Line['TranslatedCount'].'</a></td>'.
     70          '<td>'.$XP['Level'].'</td>'.
     71          '<td>'.ProgressBar(150, round($XP['XP'] / $XP['MaxXP'] * 100, 2), $XP['XP'].' / '.$XP['MaxXP']).'</td>'.
     72          //<td>'.$Moderators[$Line['GM']].'</td>
     73      '<td>'.HumanDate($Line['LastLogin']).'</td>'.
     74      '<td>'.HumanDate($Line['RegistrationTime']).'</td></tr>';
     75    }
     76    $Output .= '</table>'.
     77        $PageList['Output'];
     78
     79    return($Output);
     80  }
    8181}
Note: See TracChangeset for help on using the changeset viewer.