addFile(file_get_contents($Path.$FileName), $ZipPath.$FileName);
}
}
}
function OutputAoWoWToFile($ExportId)
{
global $System;
$Output = '';
$Export = new Export($System);
$Export->Id = $ExportId;
$Export->Init();
if (function_exists('gzcompress'))
{
$SaveFilename = $Export->TempDir.'CzAoWoW_SQL.zip';
$SQLFilename = 'CzAoWoW_SQL.sql';
$BufferZip = $Export->ExportToAoWoWSQL();
$ZipFile = new zipfile();
$ZipFile->addFile($BufferZip, $SQLFilename);
$Buffer = $ZipFile->file();
file_put_contents($SaveFilename, $Buffer);
} else $Output .= ShowMessage('Funkce pro tvorbu Zip souboru není podporována.', MESSAGE_CRITICAL);
//$Output .= '';
$Output .= 'Pokud nezačalo stahování, soubor by mělo jít stáhnout pomocí tohoto odkazu: '.
''.$SQLFilename.'
'.
'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.';
return $Output;
}
function OutputAoWoWToHTML($ExportId)
{
global $System;
$Export = new Export($System);
$Export->Id = $ExportId;
$Output = 'Vygenerovaný SQL kód:
'.
htmlspecialchars($Export->ExportToAoWoWSQL()).
'
';
return $Output ;
}
function OutputMangosSQLToFile($ExportId)
{
global $System;
$Output = '';
$Export = new Export($System);
$Export->Id = $ExportId;
$Export->Init();
if (function_exists('gzcompress'))
{
$SaveFilename = $Export->TempDir.'CzWoW_SQL.zip';
$SQLFilename = 'CzWoW_SQL.sql';
$BufferZip = $Export->ExportToMangosSQL();
$ZipFile = new zipfile();
$ZipFile->addFile($BufferZip, $SQLFilename);
$Buffer = $ZipFile->file();
file_put_contents($SaveFilename, $Buffer);
} else $Output .= ShowMessage('Funkce pro tvorbu Zip souboru není podporována.', MESSAGE_CRITICAL);
//$Output .= '';
$Output .= 'Pokud nezačalo stahování, soubor by mělo jít stáhnout pomocí tohoto odkazu: '.
''.$SQLFilename.'
'.
'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.';
return $Output;
}
function OutputMangosSQLToHTML($ExportId)
{
global $System;
$Export = new Export($System);
$Export->Id = $ExportId;
$Export->Init();
$Output = 'Vygenerovaný SQL kód:
'.
htmlspecialchars($Export->ExportToMangosSQL()).
'
';
return $Output;
}
function OutputAddon($ExportId)
{
global $System;
if (function_exists('gzcompress'))
{
$Addon = new ExportAddon($System);
$Addon->Id = $ExportId;
$Addon->Init();
$Output = $Addon->MakeAddon();
$Output .= 'Generování addonu...
';
$SaveFilename = $Addon->TempDir.'CzWoW_Addon-'.$Addon->ClientVersion['Version'].'.zip';
$Zip = new zipfile();
CreateZipFromDir($Zip, $Addon->TempDir.'CzWoW/', 'CzWoW/');
$Zip->addFile(file_get_contents(dirname(__FILE__).'/files/'.$Addon->ClientVersion['Version'].'/CzWoW/OptionsFrame.xml'), 'CzWoW/OptionsFrame.xml');
$Zip->addFile(file_get_contents(dirname(__FILE__).'/files/'.$Addon->ClientVersion['Version'].'/CzWoW/CzWoW.xml'), 'CzWoW/CzWoW.xml');
$Zip->addFile(file_get_contents(dirname(__FILE__).'/files/'.$Addon->ClientVersion['Version'].'/CzWoW/CzWoW.toc'), 'CzWoW/CzWoW.toc');
$Zip->addFile(file_get_contents(dirname(__FILE__).'/files/'.$Addon->ClientVersion['Version'].'/CzWoW/CzWoW.lua'), 'CzWoW/CzWoW.lua');
$Zip->addFile(file_get_contents(dirname(__FILE__).'/files/'.$Addon->ClientVersion['Version'].'/CzWoW/GameMenuFrame.xml'), 'CzWoW/GameMenuFrame.xml');
$Zip->addFile(file_get_contents(dirname(__FILE__).'/files/'.$Addon->ClientVersion['Version'].'/CzWoW/Localization.lua'), 'CzWoW/Localization.lua');
$Buffer = $Zip->file();
file_put_contents($SaveFilename, $Buffer);
$Output .= 'Hotovo
';
} else $Output = ShowMessage('Funkce pro tvorbu Zip souboru není podporována.', MESSAGE_CRITICAL);
//$Output .= '';
$Output .= 'Soubor ke stažení: '.
'CzWoW_Addon-'.$Addon->ClientVersion['Version'].'.zip
'.
'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.';
$Output .= '
Použití ve hře
Menu addonu ve hře vyvoláte povelem /czwow.';
return $Output;
}
function OutputXMLToFile($ExportId)
{
global $System;
$Output = '';
$Export = new Export($System);
$Export->Id = $ExportId;
$Export->Init();
if (function_exists('gzcompress'))
{
$SaveFilename = $Export->TempDir.'CzWoW_XML.zip';
$SQLFilename = 'CzWoW_XML.sql';
$BufferZip = $Export->ExportToXML();
$ZipFile = new zipfile();
$ZipFile->addFile($BufferZip, $SQLFilename);
$Buffer = $ZipFile->file();
file_put_contents($SaveFilename, $Buffer);
} else $Output .= ShowMessage('Funkce pro tvorbu Zip souboru není podporována.', MESSAGE_CRITICAL);
//$Output .= '';
$Output .= 'Pokud nezačalo stahování, soubor by mělo jít stáhnout pomocí tohoto odkazu: '.
'CzWoW_SQL.zip
'.
'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.';
return $Output;
}
function OutputXMLToHTML($ExportId)
{
global $System;
$Export = new Export($System);
$Export->Id = $ExportId;
$Export->Init();
$Output = 'Vygenerované XML:
'.
htmlspecialchars($Export->ExportToXML()).
'
';
return $Output;
}
function OutputDBCToFile($ExportId)
{
global $System;
$Export = new Export($System);
$Export->Id = $ExportId;
$Export->Init();
$Output = '';
$DbResult = $System->Database->query('SELECT `Id` FROM `ExportTask` WHERE (`Export` = '.$ExportId.
') AND ((`TimeFinish` < `TimeStart`) OR (`TimeFinish` IS NULL))');
if ($DbResult->num_rows == 0)
{
if (array_key_exists('Regenerate', $_POST))
{
$System->Database->query('UPDATE `ExportTask` SET `TimeQueued` = NOW(), `Progress`=0 , `TimeStart` = NULL, `TimeFinish` = NULL WHERE `Export` = '.$ExportId);
$Output .= ShowMessage('Soubor zařazen znovu ke zpracování do fronty.');
$System->ModuleManager->Modules['Log']->WriteLog('Zadání úlohy pro vygenerování dbc souboru', LOG_TYPE_DOWNLOAD);
} else {
$Output .= '
';
}
}
$Output .= '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.
'.
'DBC soubory je nutné zabalit do souboru patch-enGB-5.MPQ uvnitř složky "DBFilesClient" a '.
'hru spouštět přes upravený spouštěcí soubor. Zabalit je můžete pomocí programu '.
'Ladik\'s MPQ Editor. Stav vygenerování '.
'můžete sledovat na této stránce.
';
$DbResult = $System->Database->query('SELECT * FROM `ExportTask` WHERE `Export` = '.$ExportId);
if ($DbResult->num_rows == 0)
{
$System->Database->query('INSERT INTO `ExportTask` (`Export` ,`TimeQueued`, `Progress` ) VALUES ('.$ExportId.', NOW(), 0)');
$System->ModuleManager->Modules['Log']->WriteLog('Zadání úlohy pro vygenerování DBC souboru', LOG_TYPE_DOWNLOAD);
$System->Database->query('UPDATE `ExportTask` SET `Progress`=0 WHERE `Export`='.$Export->Id);
}
$DbResult = $System->Database->query('SELECT `TimeFinish` FROM `ExportTask` WHERE `Export` = '.$ExportId);
$ExportTask = $DbResult->fetch_assoc();
if ($ExportTask['TimeFinish'] <> '')
{
$Output .= 'Souhrný balík: CzWoW_DBC.zip
';
$DbResult = $System->Database->query('SELECT `Group`.* FROM `ExportGroup` JOIN `Group` ON `Group`.`Id` = `ExportGroup`.`Group` WHERE `ExportGroup`.`Export`='.$Export->Id.' AND `Group`.`DBCFileName` != ""');
while ($Group = $DbResult->fetch_assoc())
{
if (file_exists($Export->TempDir.'dbc/'.$Group['DBCFileName'].'.dbc'))
$Output .= ''.$Group['DBCFileName'].'.dbc
';
}
} else {
$Output .= ShowProgress($Export);
}
return $Output;
}
function ShowProgress($Export)
{
global $System;
$Output = '';
$Output .= 'Fronta zpracování exportů. Zobrazuje procenta dokončení:
';
$Output .= ''.
'';
$Output .= ' '.$System->ModuleManager->Modules['Export']->GetTaskProgress($_GET['ExportId'] * 1).
'
';
// Check if process task is running
$Timeout = 60 * 60 * 2; // two hours
$DbResult = $System->Database->query('SELECT * FROM `ExportTask` '.
'LEFT JOIN `Export` ON `Export`.`Id` = `ExportTask`.`Export` '.
'WHERE ((`Export`.`OutputType` = 9) OR (`Export`.`OutputType` = 10)) AND '.
'(`TimeFinish` IS NULL) AND (`TimeQueued` < (NOW() - '.$Timeout.'))');
if ($DbResult->num_rows > 0)
{
$System->ModuleManager->Modules['Log']->WriteLog('ProcesTask nepracuje přes 2 hodiny, pravděpodobně nepracuje!', LOG_TYPE_ERROR);
}
return $Output;
}
function OutputEXEToFile($ExportId)
{
global $System;
$Export = new Export($System);
$Export->Id = $ExportId;
$Export->Init();
$Export->LoadFilters();
$Output = '';
// Allow to regenerate output if it was previously finished
$DbResult = $System->Database->query('SELECT `Id` FROM `ExportTask` WHERE (`Export` = '.$ExportId.
') AND ((`TimeFinish` < `TimeStart`) OR (`TimeFinish` IS NULL))');
if ($DbResult->num_rows == 0)
{
if (array_key_exists('Regenerate', $_POST))
{
$System->Database->query('UPDATE `ExportTask` SET `TimeQueued` = NOW(), `Progress`=0, `TimeStart` = NULL, `TimeFinish` = NULL WHERE `Export` = '.$ExportId);
$Output .= ShowMessage('Soubor zařazen znovu ke zpracování do fronty.');
$System->ModuleManager->Modules['Log']->WriteLog('Zadání úlohy pro vygenerování exe souboru', LOG_TYPE_DOWNLOAD);
} else {
$Output .= '
';
}
}
$Output .= 'U souhrné instalace češtiny funguje export textů jinak, protože generování je náročné, jsou požadavky zařazovány do fronty a postupně zpracovávány.
';
// Start task for the first time if export task was not yet started
$DbResult = $System->Database->query('SELECT * FROM `ExportTask` WHERE `Export` = '.$ExportId);
if ($DbResult->num_rows == 0)
{
$System->Database->query('INSERT INTO `ExportTask` (`Export`, `TimeStart` ) VALUES ('.$ExportId.', NOW())');
$System->ModuleManager->Modules['Log']->WriteLog('Zadání úlohy pro vygenerování DBC souboru', LOG_TYPE_DOWNLOAD);
}
$DbResult = $System->Database->query('SELECT `TimeFinish` FROM `ExportTask` WHERE `Export` = '.$ExportId);
$ExportTask = $DbResult->fetch_assoc();
if ($ExportTask['TimeFinish'] <> '')
{
$FileName = 'Instalace_CzechWoW_'.$Export->ClientVersion['Version'].'.exe';
$Output .= 'Souhrný EXE balík: '.$FileName.'
';
} else {
$Output .= ShowProgress($Export);
}
return $Output;
}
function OutputLua($ExportId)
{
global $System;
$Export = new Export($System);
$Export->Id = $ExportId;
$Export->Init();
if (function_exists('gzcompress'))
{
$Output = 'Generování lua souborů...
';
$Export->ExportToLua();
$SaveFilename = $Export->TempDir.'CzWoW_Lua.zip';
$ZipFile = new zipfile();
CreateZipFromDir($ZipFile, $Export->TempDir.'lua/', '');
$Buffer = $ZipFile->file();
file_put_contents($SaveFilename, $Buffer);
$Output .= 'Hotovo
';
} else $Output = ShowMessage('Funkce pro tvorbu Zip souboru není podporována.', MESSAGE_CRITICAL);
//$Output .= '';
$Output .= 'Soubory:
'.
'Souhrný archív CzWoW_Lua.zip
';
$DbResult = $System->Database->query('SELECT `Group`.* FROM `ExportGroup` JOIN `Group` ON `Group`.`Id` = `ExportGroup`.`Group` WHERE `ExportGroup`.`Export`='.$Export->Id.' AND `Group`.`LuaFileName` != ""');
while ($Group = $DbResult->fetch_assoc())
{
$Output .= ''.$Group['LuaFileName'].'.lua
';
}
$Output .= '
Použití ve hře
Ze souborů vytvořte MPQ archív a nahrajte ho do hry do podsložky jako Data/enUS/patch-enUS-5.MPQ nebo Data/enUS/patch-enGB-5.MPQ. Pro starší verze hry než 3.2.0 je nutné spouštět hru pomocí programu WoWMe.exe (WoW Model Editor Fix).';
return $Output;
}
function ExportOutput($ExportId, $Type)
{
if ($Type == 1) $Output = OutputMangosSQLToHTML($ExportId);
else if ($Type == 2) $Output = OutputMangosSQLToFile($ExportId);
else if ($Type == 3) $Output = OutputAoWoWToHTML($ExportId);
else if ($Type == 4) $Output = OutputAoWoWToFile($ExportId);
else if ($Type == 5) $Output = OutputXMLToHTML($ExportId);
else if ($Type == 6) $Output = OutputXMLToFile($ExportId);
else if ($Type == 7) $Output = OutputAddon($ExportId);
else if ($Type == 8) $Output = OutputLua($ExportId);
else if ($Type == 9) $Output = OutputDBCToFile($ExportId);
else if ($Type == 10) $Output = OutputEXEToFile($ExportId);
else $Output = ShowMessage('Nebyl vybrán žádný formát výstupu.', MESSAGE_CRITICAL);
return $Output;
}