Changeset 247


Ignore:
Timestamp:
Jul 15, 2009, 1:36:32 PM (15 years ago)
Author:
george
Message:
  • Upraveno: Překladatel vstupuje automaticky do vlastního nově vytvořeného týmu.
  • Upraveno: Mazat prázdné týmy bez překladatelů po přestupu a po vytvoření nového.
  • Opraveno: Nové týmy můžou vytvářet pouze registrovaní uživatelé.
  • Opraveno: Nepoužívat jako parametery v URL části SQL dotazů typu ?Where=team=1. Libovolná modifikace může odrovnat celý SQL dotaz. Všechny vstupy je nutno kontrolovat před odesláním do dotazů do databáze. Správně stačí upřesnění akce a id parametrů jako ?action=filter&team=1.
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/global.php

    r222 r247  
    9696    $Config['Web']['BaseURL'].'banners.php' => array(LICENCE_ANONYMOUS, 'Weby odkazující na tento projekt bennerem', 'Odkazují na nás'),
    9797    $Config['Web']['BaseURL'].'statistic.php' => array(LICENCE_ANONYMOUS, 'Stav dokončení překládů', 'Stav dokončení'),
    98     $Config['Web']['BaseURL'].'userlist.php' => array(LICENCE_ANONYMOUS, 'Seznam registrovaných uživatelů', 'Překladatelé'),
     98    $Config['Web']['BaseURL'].'userlist.php?action=nofilter' => array(LICENCE_ANONYMOUS, 'Seznam registrovaných uživatelů', 'Překladatelé'),
    9999    $Config['Web']['BaseURL'].'team.php' => array(LICENCE_ANONYMOUS, 'Seznam překladatelských týmů', 'Týmy'),
    100100    $Config['Web']['BaseURL'].'download.php' => array(LICENCE_ANONYMOUS, 'Zde si můžete stáhnout přeložené texty', 'Stahování'),
  • trunk/includes/stream.php

    r120 r247  
    2121  public function OpenFile($FileName)
    2222  {
    23         $this->FileName = $FileName;
     23    $this->FileName = $FileName;
    2424    $this->CloseFile();
    2525    $this->Handle = fopen($FileName, 'rb');
     
    2929  public function CreateFile($FileName)
    3030  {
    31         $this->FileName = $FileName;
     31    $this->FileName = $FileName;
    3232    $this->CloseFile();
    3333    $this->Handle = fopen($FileName, 'wb+');
     
    8181  public function WriteUint($Value)
    8282  {
    83         fwrite($this->Handle, pack('V*', $Value), 4);
     83    fwrite($this->Handle, pack('V*', $Value), 4);
    8484  }
    8585   
    8686  public function WriteInt($Value)
    8787  {
    88         fwrite($this->Handle, pack('I*', $Value), 4);
     88    fwrite($this->Handle, pack('I*', $Value), 4);
    8989  } 
    9090   
     
    101101  public function WriteString($Value)
    102102  {
    103         fwrite($this->Handle, $Value);
    104         fwrite($this->Handle, "\0", 1);
     103    fwrite($this->Handle, $Value);
     104    fwrite($this->Handle, "\0", 1);
    105105  }
    106106
     
    117117  public function GetPosition()
    118118  {
    119         return(ftell($this->Handle));
     119    return(ftell($this->Handle));
    120120  }
    121121 
    122122  public function GetSize()
    123123  {
    124         return(filesize($this->FileName));
     124    return(filesize($this->FileName));
    125125  }
    126126
    127127  public function EOF()
    128128  {
    129         return(feof($this->Handle));
     129    return(feof($this->Handle));
    130130  }
    131131}
  • trunk/team.php

    r198 r247  
    55ShowPage();
    66
    7 if(array_key_exists('gointeam', $_GET))
    8 {
    9   if(Licence(LICENCE_USER))
    10   {
    11     $ID = $Database->SQLCommand('UPDATE user SET team = '.$_GET['gointeam'].' WHERE ID = '.$_SESSION['UserID']);
    12        
    13     echo('<strong>Vstoupil jsi do týmu</strong><br /><br />');
    14     WriteLog('Uživatel vstoupil do týmu '.$_GET['gointeam'], 3);
    15   }
    16 }
     7function ShowTeamList()
     8
     9  global $Config, $Database;
     10 
     11  echo('<h3>Seznam překladatelských týmů</h3>');
    1712
    18 if(array_key_exists('name', $_POST))
    19 {
    20   $ID = $Database->SQLCommand('INSERT INTO `team` (`name` ,`description` ) VALUES ( \''.$_POST['name'].'\', \''.$_POST['description'].'\');');
    21        
    22   echo('<strong>Překladatelský tým vytvořen</strong><br /><br />');
    23   WriteLog('Překladatelský tým vytvořen '.$_POST['name'], 3);
    24 } else
    25 {
    26   if(array_key_exists('create', $_GET))
    27   {
    28         echo('<form action="" method="post">'.
    29           'Jméno: <input type="text" name="name"  /><br />'.
    30           'Popis: <input type="text" name="description"  />'.
    31           '<input type="submit" value="Uložit" /><br /><br /></form>');
    32   }
     13  if(array_key_exists('Page', $_GET)) $_SESSION['Page'] = $_GET['Page'];
     14    else if(!array_key_exists('Page', $_SESSION)) $_SESSION['Page'] = 1;
     15  if(array_key_exists('Order', $_GET)) $_SESSION['Order'] = $_GET['Order'];
     16    else if(!array_key_exists('Order', $_SESSION)) $_SESSION['Order'] = 'numberuser';
     17  if(array_key_exists('Desc', $_GET)) $_SESSION['Desc'] = $_GET['Desc'];
     18    else if(!array_key_exists('Desc', $_SESSION)) $_SESSION['Desc'] = '';
     19  ListPaging('?Page=', 'team', '', $Config['Web']['ItemsPerPage'], $_SESSION['Page']);
     20  echo('<table class="BaseTable">');
    3321
    34   if(array_key_exists('team', $_GET))
    35   {
    36         //zobrazení týmu
    37         include('img_level.php');
    38         $Columns = '';
    39         $Joins = '';
    40         foreach($TranslationTree as $Group)
    41         if($Group['TablePrefix'] != '')
    42         {
    43           $Columns .= 'COALESCE(T'.$Group['Id'].'.Count, 0) + ';
    44       $Joins .= ' LEFT JOIN (SELECT User, COUNT(User) as Count FROM `'.$Group['TablePrefix'].'` WHERE (Complete = 1) AND (Language <> 0) GROUP BY User) as T'.$Group['Id'].' ON user.ID=T'.$Group['Id'].'.User';
    45         }
    46                
    47         $Line = mysql_fetch_assoc($Database->SQLCommand('SELECT *,(SELECT count(*) FROM user WHERE team = team.ID) as numberuser, (SELECT sum('.substr($Columns, 0, -3).') FROM user '.$Joins.' WHERE team = team.ID) as NumberTranslate FROM team WHERE ID='.$_GET['team']));
    48                
    49         echo('<strong>Překladatelský tým '.$Line['name'].'</strong><br />'.
    50         $Line['description'].'<br /><br />'.
    51           '<a href="export/?team='.$_GET['team'].'">Exportovat překlad týmu</a> ');
    52         if(Licence(LICENCE_USER)) echo('<a href="?gointeam='.$Line['ID'].'">Vstoupit do týmu</a><br /><br />');
    53         echo('<fieldset><legend>Statistika</legend>'.
    54           'Počet členů týmu: <a href="userlist.php?Where=team='.$Line['ID'].'" title="Zobrazit členy týmu">'.$Line['numberuser'].'</a><br />'.
    55           'Počet přeložených textů týmu: <strong>'.$Line['NumberTranslate'].'</strong><br />'.
    56           'Průměrná úroveň překladatelů v týmu: <img src="tmp/teams/'.$Line['name'].'/level.png" /><br /><br />'.
    57           '<strong>Stav dokončení pro tým:</strong><br />');
    58         foreach($TranslationTree as $Group)
    59           if($Group['TablePrefix'] != '')
    60             echo('<div class="state-image"><img alt="'.$Group['TablePrefix'].'" src="img_statistic.php?group='.$Group['Id'].'&amp;team='.$_GET['team'].'" title="statistika překladů '.$Group['Name'].'"/></div>');
    61         echo('</fieldset>');           
    62   } else
    63   {
    64     echo('<h3>Seznam překladatelských týmů</h3>');
     22  if(array_key_exists('search', $_GET))  $_SESSION['Where'] = ' WHERE `name` LIKE "%'.$_GET['search'].'%" OR `description` LIKE "%'.$_GET['search'].'%"';
     23   
     24    /*
     25    if(array_key_exists('team', $_GET))
     26    {
     27      $_SESSION['team'] = $_GET['team'];
     28      if($_GET['team'] == '') $_SESSION['team'] = '';     
     29    } else if(!array_key_exists('team', $_SESSION)) $_SESSION['team'] = '';
     30   
     31    if(is_numeric($_SESSION['team'])) $Where = ' WHERE '.$_SESSION['team'];
     32      else $Where = '';
    6533
    66     if(array_key_exists('Page', $_GET)) $_SESSION['Page'] = $_GET['Page'];
    67       else if(!array_key_exists('Page', $_SESSION)) $_SESSION['Page'] = 1;
    68     if(array_key_exists('Order', $_GET)) $_SESSION['Order'] = $_GET['Order'];
    69       else if(!array_key_exists('Order', $_SESSION)) $_SESSION['Order'] = 'numberuser';
    70     if(array_key_exists('Desc', $_GET)) $_SESSION['Desc'] = $_GET['Desc'];
    71       else if(!array_key_exists('Desc', $_SESSION)) $_SESSION['Desc'] = '';
    72     ListPaging('?Page=', 'team', '', $Config['Web']['ItemsPerPage'], $_SESSION['Page']);
    73     echo('<table class="BaseTable">');
    74 
    75     if(array_key_exists('search', $_GET))  $_SESSION['Where'] = ' WHERE `name` LIKE "%'.$_GET['search'].'%" OR `description` LIKE "%'.$_GET['search'].'%"';
    76     if(array_key_exists('Where', $_GET))
    77         {
    78           $_SESSION['Where'] = ' WHERE '.$_GET['Where'];
    79       if($_GET['Where'] == '') $_SESSION['Where'] = '';     
    80     } else if(!array_key_exists('Where', $_SESSION)) $_SESSION['Where'] = '';
    81 
    82     if($_SESSION['Where'] <> '') echo(' <a href="?Where">Zrušit filtr týmů</a><br />');
     34    if(!is_numeric($_SESSION['team'])) echo(' <a href="?Where">Zrušit filtr týmů</a><br />');
     35    */
    8336
    8437    $desc = $_SESSION['Desc'];
     
    9447*/
    9548    echo('<tr><th><a href="?Order=name&amp;Desc='.$desc.'">Jméno</a></th>'.
    96           '<th><a href="?Order=numberuser&amp;Desc='.$desc.'">Počet členů</a></th>');
     49    '<th><a href="?Order=numberuser&amp;Desc='.$desc.'">Počet členů</a></th>');
    9750    if(Licence(LICENCE_USER)) echo('<th>Uživatelské akce</th>');
    9851    echo('</tr>');
    9952
    100     $ID = $Database->SQLCommand('SELECT *,(SELECT count(*) FROM user WHERE team = team.ID) as numberuser FROM team '.$_SESSION['Where'].' ORDER BY '.$_SESSION['Order'].' '.$_SESSION['Desc'].' LIMIT '.($_SESSION['Page'] - 1) * $Config['Web']['ItemsPerPage'].','.$Config['Web']['ItemsPerPage']);
     53    $ID = $Database->SQLCommand('SELECT *, (SELECT COUNT(*) FROM user WHERE user.team = team.ID) AS numberuser FROM team ORDER BY '.$_SESSION['Order'].' '.$_SESSION['Desc'].' LIMIT '.($_SESSION['Page'] - 1) * $Config['Web']['ItemsPerPage'].','.$Config['Web']['ItemsPerPage']);
    10154    while($Line = mysql_fetch_assoc($ID))
    10255    {
    10356      echo('<tr>'.
    104         '<td><a href="?team='.$Line['ID'].'">'.$Line['name'].'</a></td>'.
    105         '<td><a href="userlist.php?Where=team='.$Line['ID'].'" title="Zobrazit členy týmu">'.$Line['numberuser'].'</a></td>');
    106       if(Licence(LICENCE_USER)) echo ('<td><a href="?gointeam='.$Line['ID'].'">Vstoupit do týmu</a></td>');
    107           echo('</tr>');
     57        '<td><a href="?action=team&amp;id='.$Line['ID'].'">'.$Line['name'].'</a></td>'.
     58        '<td><a href="userlist.php?team='.$Line['ID'].'" title="Zobrazit členy týmu">'.$Line['numberuser'].'</a></td>');
     59      if(Licence(LICENCE_USER)) echo ('<td><a href="?action=gointeam&amp;id='.$Line['ID'].'">Vstoupit do týmu</a></td>');
     60    echo('</tr>');
    10861    }
    10962    echo('</table>');
    11063
    11164    ListPaging('?Page=', 'team', '', $Config['Web']['ItemsPerPage'], $_SESSION['Page']);
    112         echo('<br /><div style="text-align: center;"><a href="?create">Vytvořit překladatelský tým</a></div>');
    113   }
     65    echo('<br /><div style="text-align: center;"><a href="?action=create">Vytvořit překladatelský tým</a></div>');
    11466}         
     67
     68if(array_key_exists('action', $_GET))
     69{
     70  if($_GET['action'] == 'gointeam')
     71  {
     72    if(Licence(LICENCE_USER))
     73    {   
     74      if(array_key_exists('id', $_GET))
     75      {
     76        $ID = $Database->SQLCommand('UPDATE user SET team = '.$_GET['id'].' WHERE ID = '.$_SESSION['UserID']);
     77        echo('<strong>Vstoupil jsi do týmu</strong><br /><br />');   
     78        WriteLog('Uživatel vstoupil do týmu '.$_GET['id'], 3);
     79
     80        // Delete all teams without users
     81        $Database->SQLCommand('DELETE FROM `team` WHERE (SELECT COUNT(*) FROM user WHERE user.team = team.ID) = 0');   
     82       
     83        ShowTeamList();
     84      } else echo('Nutno zadat id týmu');
     85    } else echo('Nemáte oprávnění');
     86  } else
     87  if($_GET['action'] == 'finish_create')
     88  {
     89    if(Licence(LICENCE_USER))
     90    {   
     91      if(array_key_exists('name', $_POST) and array_key_exists('description', $_POST))
     92      {
     93        $ID = $Database->SQLCommand('INSERT INTO `team` (`name` ,`description` ) VALUES ( \''.$_POST['name'].'\', \''.$_POST['description'].'\');'); 
     94        $Database->SQLCommand('UPDATE user SET team = '.mysql_insert_id().' WHERE ID = '.$_SESSION['UserID']);
     95        echo('<strong>Překladatelský tým vytvořen</strong><br /><br />');
     96        WriteLog('Překladatelský tým vytvořen '.$_POST['name'], 3);
     97
     98        // Delete all teams without users
     99        $Database->SQLCommand('DELETE FROM `team` WHERE (SELECT COUNT(*) FROM user WHERE user.team = team.ID) = 0');   
     100      } else echo('Chybí údaje formuláře');
     101    } else echo('Nemáte oprávnění');
     102    ShowTeamList();
     103  } else
     104  if($_GET['action'] == 'create')
     105  {
     106    if(Licence(LICENCE_USER))
     107    {   
     108      echo('<form action="?action=finish_create" method="post">'.
     109      '<fieldset><legend>Vytvoření nového týmu</legend>'.
     110      '<table><tr><td>Jméno:</td><td><input type="text" name="name" /></td></tr>'.
     111      '<tr><td>Popis:</td><td><input type="text" name="description" /></td></tr>'.
     112      '<tr><td colspan="2"><input type="submit" value="Vytvořit a vstoupit" /></td></tr>'.
     113      '</table></fieldset></form>');
     114    } else echo('Nemáte oprávnění');
     115  } else
     116  if($_GET['action'] == 'team') // Zobrazení týmu
     117  {
     118    if(array_key_exists('id', $_GET))
     119    {
     120      include('img_level.php');
     121      $Columns = '';
     122      $Joins = '';
     123      foreach($TranslationTree as $Group)
     124      if($Group['TablePrefix'] != '')
     125      {
     126        $Columns .= 'COALESCE(T'.$Group['Id'].'.Count, 0) + ';
     127        $Joins .= ' LEFT JOIN (SELECT User, COUNT(User) as Count FROM `'.$Group['TablePrefix'].'` WHERE (Complete = 1) AND (Language <> 0) GROUP BY User) as T'.$Group['Id'].' ON user.ID=T'.$Group['Id'].'.User';
     128      }
     129     
     130      $Line = mysql_fetch_assoc($Database->SQLCommand('SELECT *,(SELECT count(*) FROM user WHERE team = team.ID) as numberuser, (SELECT sum('.substr($Columns, 0, -3).') FROM user '.$Joins.' WHERE team = team.ID) as NumberTranslate FROM team WHERE ID='.$_GET['id']));
     131   
     132     echo('<strong>Překladatelský tým '.$Line['name'].'</strong><br />'.
     133      $Line['description'].'<br /><br />'.
     134        '<a href="export/?team='.$_GET['id'].'">Exportovat překlad týmu</a> ');
     135      if(Licence(LICENCE_USER)) echo('<a href="?gointeam='.$Line['ID'].'">Vstoupit do týmu</a><br /><br />');
     136      echo('<fieldset><legend>Statistika</legend>'.
     137      'Počet členů týmu: <a href="userlist.php?team='.$Line['ID'].'" title="Zobrazit členy týmu">'.$Line['numberuser'].'</a><br />'.
     138      'Počet přeložených textů týmu: <strong>'.$Line['NumberTranslate'].'</strong><br />'.
     139      'Průměrná úroveň překladatelů v týmu: <img src="tmp/teams/'.$Line['name'].'/level.png" /><br /><br />'.
     140      '<strong>Stav dokončení pro tým:</strong><br />');
     141      foreach($TranslationTree as $Group)
     142        if($Group['TablePrefix'] != '')
     143          echo('<div class="state-image"><img alt="'.$Group['TablePrefix'].'" src="img_statistic.php?group='.$Group['Id'].'&amp;team='.$_GET['id'].'" title="statistika překladů '.$Group['Name'].'"/></div>');
     144      echo('</fieldset>');   
     145    } else echo('Musíte zadat id týmu');
     146  } else ShowTeamList();
     147} else ShowTeamList();
     148
    115149ShowFooter();     
    116150
  • trunk/userlist.php

    r199 r247  
    1919  $_SESSION['Where'] = ' WHERE `user`.`user` LIKE "%'.$_GET['search'].'%"';
    2020}
    21 if(array_key_exists('Where', $_GET))
     21if(array_key_exists('team', $_GET))
    2222{
    23   $_SESSION['Where'] = ' WHERE '.$_GET['Where'];
    24   if($_GET['Where'] == '') $_SESSION['Where'] = '';     
     23  $_SESSION['Where'] = ' WHERE team='.$_GET['team'];
     24  if($_GET['team'] == '') $_SESSION['Where'] = '';     
    2525}
    2626else if(!array_key_exists('Where', $_SESSION)) $_SESSION['Where'] = '';
    2727
    28 if($_SESSION['Where'] <> '') echo(' <a href="?Where">Zrušit filtr uživatelů</a><br />');
     28if(array_key_exists('action', $_GET))
     29{
     30  if($_GET['action'] == 'nofilter') $_SESSION['Where'] = '';
     31}
     32//if($_SESSION['Where'] <> '') echo(' <a href="?action=nofilter">Zrušit filtr uživatelů</a><br />');
    2933
    3034ListPaging('?Page=', 'user', $_SESSION['Where'], $Config['Web']['ItemsPerPage'], $_SESSION['Page']);
     
    4953  if($Group['TablePrefix'] != '')
    5054  {
    51         $Columns .= 'COALESCE(T'.$Group['Id'].'.Count, 0) + ';
     55  $Columns .= 'COALESCE(T'.$Group['Id'].'.Count, 0) + ';
    5256    $Joins .= ' LEFT JOIN (SELECT User, COUNT(User) as Count FROM `'.$Group['TablePrefix'].'` WHERE (Complete = 1) AND (Language <> 0) GROUP BY User) as T'.$Group['Id'].' ON user.ID=T'.$Group['Id'].'.User';
    5357  }
Note: See TracChangeset for help on using the changeset viewer.