Changeset 297


Ignore:
Timestamp:
Dec 28, 2009, 2:32:52 PM (15 years ago)
Author:
george
Message:
  • Opraveno: Proces generování DBC a Lua souborů.
  • Opraveno: Generování SQL pro AoWoW.
  • Přidáno: Zadání popisu exportu při vytváření nového.
  • Opraveno: Soubory jednotlivých formátů výstupů exportů ukládat do samostatných podsložek a z nich pak vytvářet zip balíčky.
  • Přidáno: Omezení max. počtu vytvořených exportů na překladatele. Výchozí limit je 10.
Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/export/create_addon.php

    r291 r297  
    9797   
    9898        $CreatedFileList[] = $Column['AddonFileName'].'_'.$FileIndex;
    99         $FileName = $this->TempDir.$Column['AddonFileName'].'_'.$FileIndex.'.lua';
     99        $FileName = $this->TempDir.'CzWoW/'.$Column['AddonFileName'].'_'.$FileIndex.'.lua';
     100        if(!file_exists($this->TempDir.'CzWoW/')) mkdir($this->TempDir.'CzWoW/', 0777, true);
    100101        echo($Column['AddonFileName'].': ');
    101102        $i = 0;
     
    129130      $Buffer .= '<script file="'.$CreatedFile.'.lua"/>'."\n";
    130131    $Buffer .= '</Ui>';
    131     file_put_contents($this->TempDir.'Translates.xml', $Buffer);
     132    file_put_contents($this->TempDir.'CzWoW/Translates.xml', $Buffer);
    132133  }
    133134
     
    168169      $Buffer .= 'f("'.addslashes($Line['ShortCut']).'", "'.$Original.'", "'.$Translated.'");'."\n";
    169170    }
    170     file_put_contents($this->TempDir.'LocalizationStrings.lua', $Buffer);
     171    file_put_contents($this->TempDir.'CzWoW/LocalizationStrings.lua', $Buffer);
    171172  }
    172173
  • trunk/export/export.php

    r293 r297  
    3636    // Filter selected users
    3737    $this->SelectedUsers = ''; 
    38     $DbResult = $this->Database->query('SELECT * FROM `ExportUser` WHERE Export='.$this->Id.' ORDER BY Sequence');
     38    $this->UserNames = '';
     39    $DbResult = $this->Database->query('SELECT ExportUser.*, user.user FROM `ExportUser` LEFT JOIN user ON user.ID=ExportUser.User WHERE ExportUser.Export='.$this->Id.' ORDER BY ExportUser.Sequence');
    3940    while($User = $DbResult->fetch_assoc())
     41    {
    4042      $this->SelectedUsers .= ','.$User['User'];
     43      $this->UserNames .= ','.$User['user'];
     44    }
    4145    $this->SelectedUsers = substr($this->SelectedUsers, 1);
    42    
    43     if($this->SelectedUsers == '') $Where = 0;
    44       else $Where = 'ID IN ('.$this->SelectedUsers.')';
    45  
    46     $this->UserNames = '';
    47     $DbResult = $this->Database->query('SELECT user FROM `user` WHERE '.$Where);
    48     while($DbRow = $DbResult->fetch_assoc())
    49       $this->UserNames .= ','.$DbRow['user'];
    50     $this->UserNames = substr($this->UserNames, 1);   
     46    $this->UserNames = substr($this->UserNames, 1);     
    5147   
    5248    if($this->SelectedUsers == '')
    5349    {
    54       $this->WhereUsers = 1;
     50      $this->WhereUsers = 0;
    5551      $this->OrderByUserList = '';
    5652    } else
     
    6056    }
    6157   
     58    // Load logged user
    6259    if(isset($_SESSION) and ($_SESSION['UserID'] != ''))
    6360    {
     
    10198      if($Group['MangosTable'] != '')
    10299      {
    103         $Query = 'SELECT * FROM (SELECT * FROM '.$Group['TablePrefix'].' WHERE (Complete = 1) AND VersionStart <= '.$this->ClientVersion['BuildNumber'].' AND VersionEnd >= '.$this->ClientVersion['BuildNumber'].' AND '.$this->WhereLang.' AND '.$this->WhereUsers.' ORDER BY FIELD(User, '.$this->SelectedUsers.')) AS T GROUP BY T.entry'; 
     100        $Query = 'SELECT * FROM (SELECT * FROM '.$Group['TablePrefix'].' WHERE (Complete = 1) AND VersionStart <= '.$this->ClientVersion['BuildNumber'].' AND VersionEnd >= '.$this->ClientVersion['BuildNumber'].' AND '.$this->WhereLang.' AND '.$this->WhereUsers.$this->OrderByUserList.') AS T GROUP BY T.entry'; 
    104101        //echo($Query);
    105102        $Buffer .= "\n\n-- ".$Group['Name']."\n\n";
     
    129126 
    130127    $Buffer = $this->ExportToMangosSQL();
    131  
    132     $this->LoadFilters();
    133 
     128 
    134129    // Data to aowow
    135130
     
    137132    $Database2->query('SET NAMES '.$this->Config['Database']['Charset']);
    138133    $Database2->select_db($AoWoWconf['mangos']['db']);   
    139     $AoWoWTables = array('aowow_resistances' => 'Id', 'aowow_spelldispeltype' => 'Id', 'aowow_skill' => 'skillID');
     134    $AoWoWTables = array(
     135      'aowow_resistances' => 'Id',
     136      'aowow_spelldispeltype' => 'Id',
     137      'aowow_skill' => 'skillID',
     138    );
    140139    foreach($AoWoWTables as $AoWoWTable => $IndexColum)
    141140    {
     
    147146      {
    148147        $Ori_text = $Line['name'];
    149         $DbResult2 = $Datbase2->query('SELECT text as en,
     148        $DbResult2 = $Database2->query('SELECT text as en,
    150149        (SELECT text FROM '.$Config['Database']['Database'].'.global_strings as tabletran
    151          WHERE tableen.entry = tabletran.entry AND (Complete = 1) AND '.$WhereLang.'
    152           AND '.$WhereUsers.' ORDER BY FIELD(User, '.$SelectedUsers.') LIMIT 1) as tran
     150         WHERE tableen.entry = tabletran.entry AND (Complete = 1) AND '.$this->WhereLang.'
     151          AND '.$this->WhereUsers.$this->OrderByUserList.' LIMIT 1) as tran
    153152         FROM '.$Config['Database']['Database'].'.global_strings as tableen WHERE
    154153          text = "'.addslashes($Ori_text).'" LIMIT 1');
     
    160159          (SELECT OptionText FROM '.$this->Config['Database']['Database'].'.npc_option as tabletran
    161160           WHERE tableen.entry = tabletran.entry AND (Complete = 1) AND '.$this->WhereLang.'
    162             AND '.$this->WhereUsers.' ORDER BY FIELD(User, '.$this->SelectedUsers.') LIMIT 1) as tran
     161            AND '.$this->WhereUsers.$this->OrderByUserList.' LIMIT 1) as tran
    163162          FROM '.$this->Config['Database']['Database'].'.npc_option as tableen WHERE
    164163            OptionText = "'.addslashes($Ori_text).'" LIMIT 1');
     
    205204        $Group['MangosTableIndex'] = 'entry';
    206205      }
    207       $Query = 'SELECT *,(SELECT user FROM user WHERE user.ID=T.User) as UserName FROM (SELECT * FROM '.$Group['TablePrefix'].' WHERE (Complete = 1) AND VersionStart <= '.$this->ClientVersion['BuildNumber'].' AND VersionEnd >= '.$this->ClientVersion['BuildNumber'].' AND '.$this->WhereLang.' AND '.$this->WhereUsers.' ORDER BY FIELD(User, '.$this->SelectedUsers.')) AS T GROUP BY T.entry';
    208       //echo($Query);
     206      $Query = 'SELECT *,(SELECT user FROM user WHERE user.ID=T.User) as UserName FROM (SELECT * FROM '.$Group['TablePrefix'].' WHERE (Complete = 1) AND (VersionStart <= '.$this->ClientVersion['BuildNumber'].') AND (VersionEnd >= '.$this->ClientVersion['BuildNumber'].') AND '.$this->WhereLang.' AND '.$this->WhereUsers.$this->OrderByUserList.') AS T GROUP BY T.entry';
     207      echo($Query);
    209208      $Buffer .= '    <group id="'.$Group['Id'].'" name="'.$Group['TablePrefix'].'">'."\n";
    210209      $DbResult2 = $this->Database->query($Query);
     
    239238    {
    240239      echo($Group['Name'].'... ');
     240      if(file_exists('../source/'.$this->ClientVersion['Version'].'/dbc/'.$Group['DBCFileName'].'.dbc'))
     241      {
    241242      $DBCFile = new DBCFile();
    242       $DBCFile->OpenFile('../source/'.$this->ClientVersion['Version'].'/dbc/'.$Group['DBCFileName'].'.dbc', GetDBCColumns($Setting['Version'], $Group['DBCFileName']));
     243      $DBCFile->OpenFile('../source/'.$this->ClientVersion['Version'].'/dbc/'.$Group['DBCFileName'].'.dbc', GetDBCColumns($this->ClientVersion['Version'], $Group['DBCFileName']));
    243244      $DBCFile2 = new DBCFile();
    244       $DBCFile2->CreateFile($this->TempDir.$Group['DBCFileName'].'.dbc', GetDBCColumns($this->ClientVersion['Version'], $Group['DBCFileName']));
     245      if(!file_exists($this->TempDir.'dbc/')) mkdir($this->TempDir.'dbc/', 0777, true);     
     246      $DBCFile2->CreateFile($this->TempDir.'dbc/'.$Group['DBCFileName'].'.dbc', GetDBCColumns($this->ClientVersion['Version'], $Group['DBCFileName']));
    245247      $Count = $DBCFile->GetRecordCount();
    246248      //if($Group['DBCFileName'] == 'Spell') $Count = 1000;
     
    267269      $DBCFile2->Commit();
    268270      echo('Hotovo <br />');
     271    } else echo('Zdrojový soubor '.'../source/'.$this->ClientVersion['Version'].'/dbc/'.$Group['DBCFileName'].'.dbc'.' nenalezen.'."\n");
    269272    }
    270273  }
     
    283286      $File->OpenFile('../source/'.$this->ClientVersion['Version'].'/lua/'.$Group['LuaFileName'].'.lua');
    284287      $File2 = new FileStream();
    285       $File2->CreateFile($this->TempDir.''.$Group['LuaFileName'].'.lua');
     288      if(!file_exists($this->TempDir.'lua/')) mkdir($this->TempDir.'lua/', 0777, true);
     289      $File2->CreateFile($this->TempDir.'lua/'.$Group['LuaFileName'].'.lua');
    286290 
    287291      while(!$File->EOF())
     
    296300          $Value['Comment'] = addslashes(substr(trim($LineParts[1]), 3));
    297301
    298           $Query = 'SELECT * FROM (SELECT * FROM '.$Group['TablePrefix'].' WHERE (Complete = 1) AND '.$this->WhereLang.' AND '.$this->WhereUsers.' AND (ShortCut="'.$Value['ShortCut'].'") AND VersionStart <= '.$this->ClientVersion['BuildNumber'].' AND VersionEnd >= '.$this->ClientVersion['BuildNumber'].' ORDER BY FIELD(User, '.$this->SelectedUsers.')) AS T GROUP BY T.entry';
     302          $Query = 'SELECT * FROM (SELECT * FROM '.$Group['TablePrefix'].' WHERE (Complete = 1) AND '.$this->WhereLang.' AND '.$this->WhereUsers.' AND (ShortCut="'.$Value['ShortCut'].'") AND (VersionStart <= '.$this->ClientVersion['BuildNumber'].') AND (VersionEnd >= '.$this->ClientVersion['BuildNumber'].')'.$this->OrderByUserList.') AS T GROUP BY T.entry';
    299303          //echo($Query);
    300304          $DbResult2 = $this->Database->query($Query);
  • trunk/export/export_output.php

    r292 r297  
    3939    file_put_contents($SaveFilename, $Buffer);
    4040  } else echo('Funkce pro tvorbu Zip souboru není podporována!');
    41   echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
    42     'setTimeout("parent.location.href=\''.$SaveFilename.'\'", 3000)'.
    43     '</script>');
     41  //echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
     42  //  'setTimeout("parent.location.href=\''.$SaveFilename.'\'", 3000)'.
     43  //  '</script>');
    4444     
    4545  echo('Pokud nezačalo stahování, soubor by mělo jít stáhnout pomocí tohoto odkazu: '.
     
    111111   
    112112    echo('Generování addonu...<br />');
    113     $SaveFilename = $Config['Web']['TempFolder'].$_SESSION['User'].'/CzWoW_Addon-'.$Addon->ClientVersion['Version'].'.zip';         
     113    $SaveFilename = $Addon->TempDir.'CzWoW_Addon-'.$Addon->ClientVersion['Version'].'.zip';         
    114114    $Zip = new zipfile();
    115115    CreateZipFromDir($Zip, $Addon->TempDir, 'CzWoW/');
     
    124124    echo('Hotovo<br /><br />');
    125125  } else echo('Funkce pro tvorbu Zip souboru není podporována!');
    126   echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
    127     'setTimeout("parent.location.href=\''.$SaveFilename.'\'", 3000)'.
    128     '</script>');
    129      
    130   echo('Pokud nezačalo stahování, soubor by mělo jít stáhnout pomocí tohoto odkazu: '.
     126  //echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
     127  //  'setTimeout("parent.location.href=\''.$SaveFilename.'\'", 3000)'.
     128  //  '</script>');
     129     
     130  echo('Soubor ke stažení: '.
    131131    '<a href="'.$SaveFilename.'">CzWoW_Addon-'.$Addon->ClientVersion['Version'].'.zip</a><br />'.
    132132    'Pokud se vám zdá, že filtr na export nefunguje, vymažte si vyrovnávací paměť prohlížeče a zkuste stáhnout soubor znovu.');
     
    151151    file_put_contents($SaveFilename, $Buffer);
    152152  } else echo('Funkce pro tvorbu Zip souboru není podporována!');
    153   echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
    154   'setTimeout("parent.location.href=\''.$SaveFilename.'\'", 3000)'.
    155   '</script>');
     153  //echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
     154  // 'setTimeout("parent.location.href=\''.$SaveFilename.'\'", 3000)'.
     155  // '</script>');
    156156     
    157157  echo('Pokud nezačalo stahování, soubor by mělo jít stáhnout pomocí tohoto odkazu: '.
     
    174174function OutputDBCToFile($ExportId)
    175175{
    176   global $Database;
     176  global $Database, $System;
    177177 
    178178  echo('<form action="?Action=View&amp;Tab=6&amp;ExportId='.$ExportId.'" method="post"><input type="submit" name="Regenerate" value="Přegenerovat"/></form><br />');
    179   echo('U DBC souborů export textů funguje jinak, protože generování je náročné na výpočet provádí se přes noc, kdy je server nejmíň vytížen. Nyní jste zadali úlohu, která se provede v noci. Zítra si můžete stáhnout vygenerovaný soubor v sekci <a href="../download.php">Stahování</a>.<br /><br />DBC soubory je nutné zabalit do souboru patch-enGB-5.MPQ uvnitř složky "DBFilesClient" a hru spouštět přes wowme.exe. Zabalit to můžete pomocí programu <a href="../download/mpqediten32.zip">Ladik\'s MPQ Editor</a>. Stav vygenerování můžete sledovat na této stránce, kde si také můžete zítra soubor stáhnout.<br /><br />');
     179  echo('U DBC souborů export textů funguje jinak, protože generování je náročné, jsou požadavky zařazovány do fronty a postupně zpracovávány.<br />DBC soubory je nutné zabalit do souboru patch-enGB-5.MPQ uvnitř složky "DBFilesClient" a hru spouštět přes program wowme.exe (WoW Model Edit). Zabalit je můžete pomocí programu <a href="../download/mpqediten32.zip">Ladik\'s MPQ Editor</a>. Stav vygenerování můžete sledovat na této stránce.<br /><br />');
    180180   
    181181  $DbResult = $Database->SQLCommand('SELECT * FROM ExportTask WHERE Export = '.$ExportId);
     
    195195  if($ExportTask['TimeFinish'] > $ExportTask['TimeStart'])
    196196  {
    197     echo('<strong>Soubor ke stažení: <a href="../tmp/Export/'.$ExportTask['Export'].'/CzWoW_DBC.zip">CzWoW_DBC.zip</a></strong><br/>');
     197    echo('<strong>Souhrný balík: <a href="../tmp/Export/'.$ExportTask['Export'].'/CzWoW_DBC.zip">CzWoW_DBC.zip</a></strong><br/>');
     198    $Export = new Export($System);
     199    $Export->Id = $ExportId;
     200    $Export->Init();
     201    $DbResult = $System->Database->query('SELECT `group`.* FROM `ExportGroup` JOIN `group` ON `group`.`Id` = `ExportGroup`.`Group` WHERE `ExportGroup`.`Export`='.$Export->Id.' AND `group`.`DBCFileName` != ""');
     202    while($Group = $DbResult->fetch_assoc())
     203    {
     204      if(file_exists($Export->TempDir.'dbc/'.$Group['DBCFileName'].'.dbc')) echo('<a href="'.$Export->TempDir.'dbc/'.$Group['DBCFileName'].'.dbc">'.$Group['DBCFileName'].'.dbc</a><br/>');
     205    }
    198206  } else echo('<strong>Soubor čeká na zpracování ve frontě.</strong><br/>');
    199207}
     
    210218  {
    211219    echo('Generování lua souborů...<br />');
    212     $Export->ExportToLUA();
    213     $SaveFilename = $Config['Web']['TempFolder'].$_SESSION['User'].'/CzWoW_Lua.zip';         
    214     $Zip = new zipfile();
    215     CreateZipFromDir($Zip, $Export->TempDir, '');
    216     $Buffer = $Zip->file();
     220    $Export->ExportToLua();
     221    $SaveFilename = $Export->TempDir.'CzWoW_Lua.zip';         
     222    $ZipFile = new zipfile();
     223    CreateZipFromDir($ZipFile, $Export->TempDir.'lua/', '');
     224    $Buffer = $ZipFile->file();
    217225    file_put_contents($SaveFilename, $Buffer);
    218226    echo('Hotovo<br /><br />');
    219227  } else echo('Funkce pro tvorbu Zip souboru není podporována!');
    220   echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
    221     'setTimeout("parent.location.href=\''.$SaveFilename.'\'", 3000)'.
    222     '</script>');
    223      
    224   echo('Pokud nezačalo stahování, soubor by mělo jít stáhnout pomocí tohoto odkazu: '.
    225     '<a href="'.$SaveFilename.'">CzWoW_Lua.zip</a><br />'.
    226     'Pokud se vám zdá, že filtr na export nefunguje, vymažte si vyrovnávací paměť prohlížeče a zkuste stáhnout soubor znovu.');
     228  //echo('<script type="text/javascript" language="JavaScript" charset="utf-8">'.
     229  //  'setTimeout("parent.location.href=\''.$SaveFilename.'\'", 3000)'.
     230  //  '</script>');
     231     
     232  echo('<strong>Soubory:</strong><br/>'. 
     233    'Souhrný archív <a href="'.$SaveFilename.'">CzWoW_Lua.zip</a><br />');
     234  $DbResult = $System->Database->query('SELECT `group`.* FROM `ExportGroup` JOIN `group` ON `group`.`Id` = `ExportGroup`.`Group` WHERE `ExportGroup`.`Export`='.$Export->Id.' AND `group`.`LuaFileName` != ""');
     235  while($Group = $DbResult->fetch_assoc())
     236  {
     237    echo('<a href="'.$Export->TempDir.'lua/'.$Group['LuaFileName'].'.lua">'.$Group['LuaFileName'].'.lua</a><br/>');
     238  }
    227239  echo('<br /><br /><strong>Použití ve hře</strong><br />Ze souborů vytvořte MPQ archív a nahrajte ho do hry do podsložky Data/enUS jako patch-enUS-5.MPQ. Hru spusťte pomocí programu WoWMe.exe (WoW Model Editor Fix).');
    228240}
  • trunk/export/index.php

    r295 r297  
    11<?php
    2 
    3 session_start();
    42
    53include_once('../includes/global.php');
     
    3432    array('Name' => 'TimeCreate', 'Title' => 'Čas vytvoření'),
    3533    array('Name' => 'UserName', 'Title' => 'Překladatel'),
    36     array('Name' => 'Title', 'Title' => 'Popis'),
     34    array('Name' => 'Title', 'Title' => 'Označení'),
    3735    array('Name' => 'UsedCount', 'Title' => 'Prohlédnutí výstupu'),
    38     array('Name' => 'UserCount', 'Title' => 'Překladatelů'),
     36    array('Name' => 'UserCount', 'Title' => 'Vybraných překladatelů'),
    3937    array('Name' => 'GroupCount', 'Title' => 'Překladových skupin'),
    4038    array('Name' => '', 'Title' => 'Akce'),
     
    5957function ExportCreate()
    6058{
     59  global $Database, $Config;
     60 
    6161  if(Licence(LICENCE_USER))
    6262  {   
    63     echo('<form action="?Action=CreateFinish" method="post">'.
     63    $DbResult = $Database->SQLCommand('SELECT COUNT(*) FROM Export WHERE User='.$_SESSION['UserID']);
     64    $DbRow = mysql_fetch_row($DbResult);
     65    if($DbRow[0] < $Config['MaxExportPerUser'])
     66    {
     67      echo('<form action="?Action=CreateFinish" method="post">'.
    6468      '<fieldset><legend>Vytvoření nového exportu</legend>'.
    65       '<table><tr><td>Titulek:</td><td><input type="text" name="Title" /></td></tr>'.
     69      '<table><tr><td>Označení:</td><td><input type="text" name="Title" /></td></tr>'.
     70      '<tr><td>Popis:</td><td><textarea name="Description" cols="54" rows="10"></textarea></td></tr>'.
    6671      '<tr><td colspan="2"><input type="submit" value="Vytvořit" /></td></tr>'.
    6772      '</table></fieldset></form>');
     73    } else echo('Nemůžete vytvářet další export. Max. počet na uživatele je '.$Config['MaxExportPerUser'].'.');
    6874  } else echo('Nemáte oprávnění');
    6975}
     
    7177function ExportCreateFinish()
    7278{
    73   global $Database;
     79  global $Database, $Config;
    7480 
    7581  if(Licence(LICENCE_USER))
    7682  {   
    77     if(array_key_exists('Title', $_POST))
    78     {
    79       $Database->SQLCommand('INSERT INTO `Export` (`Title`, `User`, `TimeCreate`) VALUES ("'.$_POST['Title'].'", '.$_SESSION['UserID'].', NOW())');
    80       $ExportId = mysql_insert_id();
    81       echo('Nový export vytvořen.<br/>Přímý odkaz na tento export: <a href="?Action=View&amp;ExportId='.$ExportId.'">zde</a><br/><br/>');
    82       $_GET['Filter'] = 'my';
    83       ExportList();
     83    if(array_key_exists('Title', $_POST) and array_key_exists('Description', $_POST))
     84    {
     85      $DbResult = $Database->SQLCommand('SELECT COUNT(*) FROM `Export` WHERE `User`='.$_SESSION['UserID']);
     86      $DbRow = mysql_fetch_row($DbResult);
     87      if($DbRow[0] < $Config['MaxExportPerUser'])
     88      {
     89        $Database->SQLCommand('INSERT INTO `Export` (`Title`, `User`, `TimeCreate`, `WithDiacritic`, `Description`) VALUES ("'.$_POST['Title'].'", '.$_SESSION['UserID'].', NOW(), 1, "'.$_POST['Description'].'")');
     90        $ExportId = mysql_insert_id();
     91        echo('Nový export vytvořen.<br/>Přímý odkaz na tento export: <a href="?Action=View&amp;ExportId='.$ExportId.'">zde</a><br/><br/>');
     92        $_GET['Filter'] = 'my';
     93        ExportList();
     94      } else echo('Nemůžete vytvářet další export. Max. počet na uživatele je '.$Config['MaxExportPerUser'].'.');
    8495    } else echo('Chybí údaje formuláře');
    8596  } else echo('Nemáte oprávnění');
  • trunk/export/process_task.php

    r292 r297  
    1717    if($DbRow['ExportId'] != '')
    1818    {
    19       $Export = new Export($System);
    20       $Export->Id = $DbRow['Export'];
    21       $Export->Init();
     19      try
     20      {
     21        $Export = new Export($System);
     22        $Export->Id = $DbRow['Export'];
     23        $Export->Init();
    2224   
    23       if(function_exists('gzcompress'))
     25        if(function_exists('gzcompress'))
     26        {
     27          echo('Generování DBC souborů pro export '.$Export->Id.'.. '."\n");
     28          $Export->ExportToDBC();
     29          $SaveFilename = $Export->TempDir.'/CzWoW_DBC.zip';         
     30          $Zip = new zipfile();
     31          CreateZipFromDir($Zip, $Export->TempDir.'dbc/', 'DBFilesClient/');
     32          $Buffer = $Zip->file();
     33          file_put_contents($SaveFilename, $Buffer);
     34          echo('Hotovo');
     35        } else echo('Funkce pro tvorbu Zip souboru není podporována!');
     36        $Database->SQLCommand('UPDATE ExportTask SET TimeFinish=NOW() WHERE Export='.$Export->Id);
     37      } catch (Exception $e)
    2438      {
    25         echo('Generování DBC souborů pro export '.$Export->Id.'.. '."\n");
    26         $Export->ExportToDBC();
    27         $SaveFilename = $Config['Web']['TempFolder'].'Export/'.$Export->Id.'/CzWoW_DBC.zip';         
    28         $Zip = new zipfile();
    29         CreateZipFromDir($Zip, $Export->TempDir, 'DBFilesClient/');
    30         $Buffer = $Zip->file();
    31         file_put_contents($SaveFilename, $Buffer);
    32         echo('Hotovo');
    33       } else echo('Funkce pro tvorbu Zip souboru není podporována!');
    34       $Database->SQLCommand('UPDATE ExportTask SET TimeFinish=NOW() WHERE Export='.$Export->Id);
     39        echo 'Caught exception: ',  $e->getMessage(), "\n";
     40      }
    3541    } else echo('Export '.$DbRow['Export'].' nenalezen'."\n");
    3642  }
  • trunk/includes/config.sample.php

    r292 r297  
    2626  ),
    2727  'ExportTashProcessPeriod' => 10,
     28  'MaxExportPerUser' => 10,
    2829);
    2930
  • trunk/includes/dbc.php

    r234 r297  
    3838    $this->GenerateOffsetTable($Format);
    3939    if($this->Offsets[count($this->Offsets) - 1] != $this->RecordSize)
    40           die(RECORD_SIZE_NOT_MATCH.$this->Offsets[count($this->Offsets) - 1].' <> '.$this->RecordSize);
     40    die(RECORD_SIZE_NOT_MATCH.$this->Offsets[count($this->Offsets) - 1].' <> '.$this->RecordSize);
    4141  }
    4242
     
    4747    $this->WriteUint(0x43424457);
    4848       
    49         $this->StringList = array();
    50         $this->StringOffset = 1;
     49    $this->StringList = array();
     50    $this->StringOffset = 1;
    5151    $this->Format = $Format;
    5252    $this->GenerateOffsetTable($Format);
    53         $this->FieldCount = strlen($Format);
    54         $this->RecordCount = 0;
    55         $this->RecordSize = $this->Offsets[count($this->Offsets) - 1];
    56         $this->StringBlockSize = 0;
     53    $this->FieldCount = strlen($Format);
     54    $this->RecordCount = 0;
     55    $this->RecordSize = $this->Offsets[count($this->Offsets) - 1];
     56    $this->StringBlockSize = 0;
    5757
    5858    $this->WriteUint($this->RecordCount);
     
    6565  {
    6666    $this->Offsets = array();
    67         $this->Offsets[0] = 0;
     67    $this->Offsets[0] = 0;
    6868    for($I = 0; $I < strlen($Format); $I++)
    6969    {
     
    7272      {
    7373        case "b":
    74                 case "X":
    75                   $this->Offsets[$I + 1] += 1; 
    76                   break;
     74        case "X":
     75          $this->Offsets[$I + 1] += 1; 
     76          break;
    7777        case "x":
    78                 case "u":
    79                 case "i":
    80                 case "f":
    81                 case "s":
    82                   $this->Offsets[$I + 1] += 4; 
    83                   break;
     78        case "u":
     79        case "i":
     80        case "f":
     81        case "s":
     82          $this->Offsets[$I + 1] += 4; 
     83          break;
    8484      }
    8585    }   
     
    142142  public function GetString($Row, $Column)
    143143  {
    144         $Offset = $this->GetUint($Row, $Column);
     144  $Offset = $this->GetUint($Row, $Column);
    145145   
    146146    $Position = $this->HeaderSize + $this->RecordCount * $this->RecordSize + $Offset;
    147         if($Position >= $this->GetSize()) return('');
     147    if($Position >= $this->GetSize()) return('');
    148148    $this->Seek($Position);
    149149     
     
    158158  public function SetString($Row, $Column, $Value)
    159159  {
    160         if(in_array($Value, $this->StringList))
    161         {
    162           $this->SetUint($Row, $Column, $this->StringListOffset[array_search($Value, $this->StringList)]);
    163         } else
    164         {
    165           $this->SetUint($Row, $Column, $this->StringOffset);
    166           $this->StringList[] = $Value;
    167           $this->StringListOffset[] = $this->StringOffset;
    168           $this->StringOffset += strlen($Value) + 1;
    169         }
     160    if(in_array($Value, $this->StringList))
     161    {
     162      $this->SetUint($Row, $Column, $this->StringListOffset[array_search($Value, $this->StringList)]);
     163    } else
     164    {
     165      $this->SetUint($Row, $Column, $this->StringOffset);
     166      $this->StringList[] = $Value;
     167      $this->StringListOffset[] = $this->StringOffset;
     168      $this->StringOffset += strlen($Value) + 1;
     169    }
    170170  }
    171171
    172172  public function Commit()
    173173  {
    174         $this->Seek(0);
     174    $this->Seek(0);
    175175    $this->WriteUint(0x43424457);
    176176    $this->WriteUint($this->RecordCount);
     
    178178    $this->WriteUint($this->RecordSize);
    179179    $this->WriteUint($this->StringOffset);         
    180         $this->Seek($this->HeaderSize + $this->RecordCount * $this->RecordSize);
    181         $this->WriteByte(0);
    182         foreach($this->StringList as $Index => $Item)
    183         {               
     180    $this->Seek($this->HeaderSize + $this->RecordCount * $this->RecordSize);
     181    $this->WriteByte(0);
     182    foreach($this->StringList as $Index => $Item)
     183    {   
    184184      $this->WriteString($Item);
    185         }
     185    }
    186186  }   
    187187   
     
    194194      {
    195195        case 'b':
    196                   $Line[$I] = $this->GetByte($Row, $I);
    197                   break;
     196          $Line[$I] = $this->GetByte($Row, $I);
     197          break;
    198198        case 'u':
    199                   $Line[$I] = $this->GetUint($Row, $I);
    200                   break;
     199          $Line[$I] = $this->GetUint($Row, $I);
     200          break;
    201201        case 'i':
    202                   $Line[$I] = $this->GetInt($Row, $I);
    203                   break;
     202          $Line[$I] = $this->GetInt($Row, $I);
     203          break;
    204204        case 'f':
    205                   $Line[$i] = $this->GetFloat($Row, $I);
    206                   break;
     205          $Line[$i] = $this->GetFloat($Row, $I);
     206          break;
    207207        case 's':
    208                   $Line[$I] = $this->GetString($Row, $I);
    209                   break;
     208          $Line[$I] = $this->GetString($Row, $I);
     209          break;
    210210        case 'x':
    211                 case 'X':
    212                 default:
    213                   break;
     211        case 'X':
     212        default:
     213          break;
    214214      }
    215215    }
     
    224224      {
    225225        case 'b':
    226                   $this->SetByte($Row, $I, $Line[$I]);
    227                   break;
     226          $this->SetByte($Row, $I, $Line[$I]);
     227          break;
    228228        case 'u':
    229                   $this->SetUint($Row, $I, $Line[$I]);
    230                   break;
     229          $this->SetUint($Row, $I, $Line[$I]);
     230          break;
    231231        case 'i':
    232                   $this->SetInt($Row, $I, $Line[$I]);
    233                   break;
     232          $this->SetInt($Row, $I, $Line[$I]);
     233          break;
    234234        case 'f':
    235                   $this->SetFloat($Row, $I, $Line[$i]);
    236                   break;
     235          $this->SetFloat($Row, $I, $Line[$i]);
     236          break;
    237237        case 's':
    238                   $this->SetString($Row, $I, $Line[$I]);
    239                   break;
     238          $this->SetString($Row, $I, $Line[$I]);
     239          break;
    240240        case 'x':
    241                 case 'X':
    242                 default:
    243                   break;
     241        case 'X':
     242        default:
     243          break;
    244244      }
    245245    }
     
    255255      {
    256256        case 'b':
    257                   $Line[$I] = $this->GetByte($Row, $Columns[$I]);
    258                   break;
     257          $Line[$I] = $this->GetByte($Row, $Columns[$I]);
     258          break;
    259259        case 'u':
    260                   $Line[$I] = $this->GetUint($Row, $Columns[$I]);
    261                   break;
     260          $Line[$I] = $this->GetUint($Row, $Columns[$I]);
     261          break;
    262262        case 'i':
    263                   $Line[$I] = $this->GetInt($Row, $Columns[$I]);
    264                   break;
     263          $Line[$I] = $this->GetInt($Row, $Columns[$I]);
     264          break;
    265265        case 'f':
    266                   $Line[$i] = $this->GetFloat($Row, $Columns[$I]);
    267                   break;
     266          $Line[$i] = $this->GetFloat($Row, $Columns[$I]);
     267          break;
    268268        case 's':
    269                   $Line[$I] = $this->GetString($Row, $Columns[$I]);
    270                   break;
     269          $Line[$I] = $this->GetString($Row, $Columns[$I]);
     270          break;
    271271        case 'x':
    272                 case 'X':
    273                 default:
    274                   break;
     272        case 'X':
     273        default:
     274          break;
    275275      }
    276276    }
     
    280280  public function GetRecordCount()
    281281  {
    282         return($this->RecordCount);
     282    return($this->RecordCount);
    283283  }
    284284
    285285  public function SetRecordCount($Value)
    286286  {
    287         $this->RecordCount = $Value;
     287  $this->RecordCount = $Value;
    288288  }
    289289
    290290  public function GetFieldCount()
    291291  {
    292         return($this->FieldCount);
     292    return($this->FieldCount);
    293293  }
    294294}
  • trunk/includes/global.php

    r296 r297  
    1414foreach($_GET as $Index => $Item) $_GET[$Index] = addslashes($_GET[$Index]);
    1515
    16 include('config.php');
    17 include('error.php');
    18 include('databaseconection.php');
    19 include('global_function.php');
    20 include('rss.php');
     16include_once('config.php');
     17include_once('error.php');
     18include_once('databaseconection.php');
     19include_once('global_function.php');
     20include_once('rss.php');
    2121include_once('system.php');
    2222
  • trunk/index.php

    r294 r297  
    11<?php
    22
    3 include('includes/global.php');
     3include_once('includes/global.php');
    44 
    55function ShowNews()
     
    1010  $DbResult = $Database->SQLCommand('SELECT news.Time, user.user, news.Text FROM news JOIN user ON user.ID = news.User ORDER BY Time DESC LIMIT 10');
    1111  while($DbRow = mysql_fetch_assoc($DbResult))
    12     $Output .= '<div><strong>'.$DbRow['user'].'('.date('d.m.Y', MysqlDateTimeToTime($DbRow['Time'])).')</strong> <br />'.$DbRow['Text'].'</div>'; 
     12    $Output .= '<div><strong>'.$DbRow['user'].' ('.date('d.m.Y', MysqlDateTimeToTime($DbRow['Time'])).')</strong> <br />'.$DbRow['Text'].'</div>'; 
    1313  $Output .= '</div>';
    1414  return($Output);
     
    2222  $DbResult = $Database->SQLCommand('SELECT date,user.user,text FROM log JOIN user ON user.ID = log.User WHERE type = 1 ORDER BY date DESC LIMIT 20');
    2323  while($DbRow = mysql_fetch_assoc($DbResult))
    24     $Output .= '<strong>'.$DbRow['user'].'('.date('d.m.Y', MysqlDateTimeToTime($DbRow['date'])).')</strong>
     24    $Output .= '<strong>'.$DbRow['user'].' ('.date('d.m.Y', MysqlDateTimeToTime($DbRow['date'])).')</strong>
    2525    '.$DbRow['text'].' <br />'; 
    2626  $Output .= '</div>';
  • trunk/readme.txt

    r292 r297  
    4747Číslo id ve sloupci entry je však přiděleno dynamicky a pro různé verze mangosu by byly čísla generovány jinak. Proto je nutno při aktualizacích čísla přebrat synchronizovat vůči starým verzím.
    4848
    49 8) Při startu systému je potřeba spustit skript export/process_task.php pro zpracování delé trvajících úloh exportů.
     49
     508) Při startu systému je potřeba spustit skript export/process_task.php pro zpracování delé trvajících úloh exportů. Proces musí být spuštěn pod uživatelem stejným jako web server (apache), kvůli správnému nastavování oprávnění.
    5051
    5152
Note: See TracChangeset for help on using the changeset viewer.