Changeset 630 for trunk/Modules/Import
- Timestamp:
- Dec 8, 2013, 6:43:40 PM (11 years ago)
- Location:
- trunk/Modules/Import
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Modules/Import/Import.php
r578 r630 15 15 $this->License = 'GNU/GPL'; 16 16 $this->Description = 'Support for import of data.'; 17 $this->Dependencies = array(); 17 $this->Dependencies = array(); 18 18 } 19 19 … … 61 61 // Update existed text 62 62 $DbRow2 = $DbResult2->fetch_assoc(); 63 if($this->HaveSameText($this->Group, $DbRow2, $Value) )63 if($this->HaveSameText($this->Group, $DbRow2, $Value) ) 64 64 { 65 65 if($DbRow2['VersionEnd'] <> $this->Version['BuildNumber']) … … 69 69 } else echo('. '); 70 70 } else 71 { 72 $Columns = '`Entry`, `Language`, `VersionStart`, `VersionEnd`'; 73 $Values = $DbRow2['Entry'].', 0, '.$this->Version['BuildNumber'].', '.$this->Version['BuildNumber']; 74 foreach($this->Group['Items'] as $GroupItem) 75 { 76 $Columns .= ', `'.$GroupItem['Column'].'`'; 77 $Values .= ', "'.$Value[$GroupItem['Column']].'"'; 78 } 79 $this->System->Database->query('INSERT `'.$this->Group['TablePrefix'].'` ('.$Columns.') VALUES ('.$Values.')'); 80 echo('# '); 81 $InsertId = $this->System->Database->insert_id; 82 $this->System->ModuleManager->Modules['Log']->WriteLog('Text <a href="form.php?group='.$this->Group['Id'].'&ID='.$InsertId.'">'.$InsertId.'</a> ('.$DbRow2['Entry'].') ze skupiny '.$this->Group['Name'].' byl v nové verzi '.$this->Version['Version'].' změněn.', LOG_TYPE_IMPORT); 71 { 72 if($DbRow2['VersionEnd'] <> $this->Version['BuildNumber']) { 73 $Columns = '`Entry`, `Language`, `VersionStart`, `VersionEnd`'; 74 $Values = $DbRow2['Entry'].', 0, '.$this->Version['BuildNumber'].', '.$this->Version['BuildNumber']; 75 foreach($this->Group['Items'] as $GroupItem) 76 { 77 $Columns .= ', `'.$GroupItem['Column'].'`'; 78 $Values .= ', "'.$Value[$GroupItem['Column']].'"'; 79 } 80 $this->System->Database->query('INSERT `'.$this->Group['TablePrefix'].'` ('.$Columns.') VALUES ('.$Values.')'); 81 echo('# '); 82 $InsertId = $this->System->Database->insert_id; 83 $this->System->ModuleManager->Modules['Log']->WriteLog('Text <a href="form.php?group='.$this->Group['Id'].'&ID='.$InsertId.'">'.$InsertId.'</a> ('.$DbRow2['Entry'].') ze skupiny '.$this->Group['Name'].' byl v nové verzi '.$this->Version['Version'].' změněn.', LOG_TYPE_IMPORT); 84 } else echo('Allready imported '.$DbRow2['Entry'].' '); 83 85 } 84 86 } else … … 115 117 { 116 118 global $TranslationTree, $PatchVersion; 117 118 119 $Output = 'Načítání textů z LUA souboru...'; 120 119 121 if(($this->Group['LuaFileName'] != '') and ($this->Group['TablePrefix'] != '')) 120 122 { 123 121 124 $Output .= '<br />'.$this->Group['Name'].'<br />'; 122 125 if($this->Group['LastVersion'] < $this->Version['BuildNumber'] + 1) 123 126 { 124 127 $File = new FileStream(); 125 $File->OpenFile('../source/'.$this->Version['Version'].'/lua/'.$this->Group['LuaFileName'].'.lua'); 128 129 $File->OpenFile(dirname(__FILE__).'/../../source/'.$this->Version['Version'].'/lua/'.$this->Group['LuaFileName'].'.lua'); 126 130 $this->NewItemCount = 0; 127 131 $Count = 0; … … 161 165 } else $Output .= ShowMessage('Není definováno jméno zdrojového souboru', MESSAGE_CRITICAL); 162 166 $Output .= ShowMessage('Dokončeno.'); 167 return ($Output); 163 168 } 164 169 … … 170 175 foreach($TranslationTree as $Group) 171 176 { 172 $Output .= '<br />'.$Group['Name'].' '; 177 $Output .= '<br />'.$Group['Name'].' '; 178 $do = true; 179 while($do) 180 { 173 181 $DbResult = $this->System->Database->query('SELECT `gs_tran`.`ID`, '. 174 182 '`gs_tran`.`VersionEnd` AS `VersionEnd_tran`, '. … … 177 185 '` AS `gs_orig` ON `gs_orig`.`ID` = `gs_tran`.`Take` WHERE '. 178 186 '`gs_tran`.`VersionEnd` <> `gs_orig`.`VersionEnd`'); 179 while($DbRow = $DbResult->fetch_assoc()) 180 { 181 $this->System->Database->query('UPDATE `'.$Group['TablePrefix'].'` SET `VersionEnd` = '.$DbRow['VersionEnd_orig'].' WHERE `ID` = '.$DbRow['ID']); 182 $Output .= '. '; 183 } 187 $do = ($DbResult->num_rows > 0); 188 while($DbRow = $DbResult->fetch_assoc()) 189 { 190 $this->System->Database->query('UPDATE `'.$Group['TablePrefix'].'` SET `VersionEnd` = '.$DbRow['VersionEnd_orig'].' WHERE `ID` = '.$DbRow['ID']); 191 $Output .= '. '; 192 } 193 } 184 194 $Output .= '<strong>Dokončeno.</strong>'; 185 195 } … … 255 265 256 266 $DBCFile = new DBCFile(); 257 $DBCFile->OpenFile( '../source/'.$this->Version['Version'].'/dbc/'.$this->Group['DBCFileName'].'.dbc', $ColumnFormat);267 $DBCFile->OpenFile(dirname(__FILE__).'/../../source/'.$this->Version['Version'].'/dbc/'.$this->Group['DBCFileName'].'.dbc', $ColumnFormat); 258 268 $ItemCount = $DBCFile->GetRecordCount(); 259 269 $this->NewItemCount = 0; … … 305 315 $Output= ''; 306 316 $File = new FileStream(); 307 $File->OpenFile( '../source/'.$this->Version['Version'].'/sql/'.$this->Group['MangosTable'].'.sql');317 $File->OpenFile(dirname(__FILE__).'/../../source/'.$this->Version['Version'].'/sql/'.$this->Group['MangosTable'].'.sql'); 308 318 $this->NewItemCount = 0; 309 319 $Count = 0; -
trunk/Modules/Import/cmd.php
r609 r630 1 1 <?php 2 2 3 include('../includes/global.php'); 4 include('../includes/dbc.php'); 5 include('import_lua.php'); 6 include('import_sql_mangos.php'); 7 include('import_dbc.php'); 8 include('update_version.php'); 3 include_once('../../includes/global.php'); 4 include_once('../../includes/dbc.php'); 5 include_once('import.php'); 6 7 $System = new System(); 8 $System->DoNotShowPage = true; 9 $System->Run(); 10 $Import = new Import($System); 11 $_SERVER['REQUEST_URI'] = __FILE__; 9 12 10 13 $Output = ''; 11 14 12 if( !Licence(LICENCE_ADMIN))15 if(defined('STDIN') == false) 13 16 { 14 17 $Output = T('Access denied'); 15 } 18 exit($Output); 19 } 16 20 17 21 foreach($_SERVER['argv'] as $parameter) … … 26 30 } 27 31 28 if(!array_key_exists(' source', $_GET))32 if(!array_key_exists('id', $_GET)) 29 33 { 30 34 $Output .= ' … … 33 37 2. Nejprve je potreba získat zdrojová data. Není zapotrebí mít všechny typy textu. 34 38 a) SQL databázi UDB seženeme na fóru: http://udbforums.kicks-ass.net/index.php?board=5.0 , sobor rozbalíme a uložíme do adresáre "wowpreklad/source/císlo_verze/sql/" 35 b) DBC soubory exportujeme prímo ze hry z souboru "World of Warcraft\Data\enGB\patch-enGB-2.MPQ" nebo z souboru s vyším císlem na konci. Export se provádí napríklad pomocí programu "MPQEditor.exe", který ke stažení v adresári "wowpreklad/download". DBC soubory jsou v MPQ souboru uloženy ve složce "DBFilesClient". Tyto soubory zkopírujte do složky "wowpreklad/source/císlo_verze/dbc/" 36 b) LUA soubory exportujeme prímo ze hry z souboru "World of Warcraft\Data\enGB\patch-enGB-2.MPQ" nebo z souboru s vyším císlem na konci. Export se provádí napríklad pomocí programu "MPQEditor.exe", který ke stažení v adresári "wowpreklad/download". LUA soubory jsou v MPQ souboru uloženy ve složce "Interface\FrameXML" a složce "Interface\GlueXML". Soubory, které porebujeme se jmenují "GlobalString.lua" a "GlueString.lua". Tyto soubory zkopírujte do složky "wowpreklad/source/císlo_verze/lua/" 37 3. Do databáze vložíme data o verzi, kterou se hodláme importovat do tabulky wow_client_verse. Pokud budeme importovat dbc soubory je nutné vložit zde strukturu dbc souboru. To lze provést napríklad pomocí programu "CBCUtil", který je také ke stažení v složce download. Tento program vytvorí soubory spustitelné v OpenOffice. Kde první rádek v tabulce je struktura dbc souboru. Typ "str" se zaznací jako "s", každý jiný typ se oznací písmenem "u". Struktura pak vypadá napríklad "usuuuuuuuuuuuu". Krome toho je zapotrebí do databáze poznacit císelné pozice textu, prní položka je 0. Z predchozího príkladu by pozice sloupce s textem byla 1. 39 b) DBC a LUA soubory exportujeme přímo ze hry z souboru "World of Warcraft\Data\enGB\locale-enGB.MPQ" a všechny soubory "wow-update-enGB-<buildnumber>.MPQ". Tyto soubory je nutné otevřít najednou v merge modu programu "MPQEditor.exe", který je ke stažení v adresáři "wowpreklad/download". DBC soubory jsou v MPQ souboru uloženy ve složce "DBFilesClient". Lua ve složce "Interface". Tyto soubory zkopírujte do složky "wowpreklad/source/císlo_verze/dbc/" nebo "lua" 40 3. Do databáze vložíme data o verzi, kterou se hodláme importovat do tabulky wow_client_verse. Pokud budeme importovat dbc soubory je nutné vložit zde strukturu dbc souboru. To lze provést napríklad pomocí programu "CBCUtil", který je také ke stažení v složce download. Tento program vytvorí soubory spustitelné v OpenOffice. Kde první rádek v tabulce je struktura dbc souboru. Typ "str" se zaznací jako "s", každý jiný typ se oznací písmenem "u". Struktura pak vypadá napríklad "usuuuuuuuuuuuu". Krome toho je zapotrebí do databáze poznacit císelné pozice textu, prní položka je 0. Z predchozího príkladu by pozice sloupce s textem byla 1. 38 41 4. V nastavení "wowpreklad/includes/config.php" nastavíme nejvyžší verzi na verzi, kterou hodláme importovat. 39 42 5. Až máme všechno pripraveno spustíme v konzoli script príkazem "php wowpreklad/import/cmd.php" kde jsou popsané možnosti paremetu s kterýma se tento script spoucí pro ruzné importy. … … 43 46 Parametry: 44 47 '; 45 $Output .= ' source=dbc ...............DBC soubory46 ';47 $Output .= 'source=sql_mangos ........SQL MaNGOS48 ';49 $Output .= 'source=lua ...............LUA soubory50 ';51 $Output .= 'source=update_version ....aktualizace verze u překladů48 $Output .= 'id=<id_import_group> - importuje skupinu <id_import_group><br /><br />'; 49 $Output .= ' <id_import_group>:'; 50 foreach($TranslationTree as $Group) 51 { 52 $Output .= '<br /> '.$Group['Id'].' '; 53 $Output .= ' '.$Group['Name'].' '; 54 } 52 55 53 ';54 56 $Output .= 'aktuálně nastavená importovávaná verze: '.$Config['Web']['GameVersion'].' 55 57 '; 56 58 } else 57 59 { 58 $Output .= '<div style="font-size: xx-small;">'; 59 switch($_GET['source']) 60 { 61 case 'sql_mangos': 62 foreach($TranslationTree as $Group) 63 { 64 if(($Group['MangosTable'] != '') and ($Group['TablePrefix'] != '') and ($Group['MangosDatabase'] == 'mangos')) 65 { 66 $Output .= ' '.$TranslationTree[$Group['Id']]['Name'].' '; 67 ImportSQLMangos($Config['Web']['GameVersion'], $Group['Id']); 68 $Output .= ' 69 '; 70 } 71 } 72 break; 73 case 'dbc': 74 foreach($TranslationTree as $Group) 75 { 76 if(($Group['DBCFileName'] != '') and ($Group['TablePrefix'] != '')) 77 { 78 $Output .= ' '.$TranslationTree[$Group['Id']]['Name'].' '; 79 ImportDBC($Config['Web']['GameVersion'], $Group['Id']); 80 $Output .= ' 81 '; 82 } 83 } 84 break; 85 case 'update_version': 86 UpdateVersion(); 87 break; 88 case 'lua': 89 ImportLUA($Config['Web']['GameVersion']); //$Config['Web']['GameVersion'] 90 UpdateVersion(); 91 break; 92 case 'xml': 93 // $Output .= '<textarea rows="34" cols="104">'; 94 include('generatecodeXML.php'); 95 // $Output .= '</textarea>'; 96 break; 97 } 98 WriteLog('Plnění databáze z příkazové řádky', LOG_TYPE_MODERATOR); 99 $Output .= '</div>'; 60 // $Output .= '<div style="font-size: xx-small;">'; 61 $Import->SetVersion($System->Config['Web']['GameVersion']); 62 $Output .= $Import->ImportGroup($_GET['id']); //$Config['Web']['GameVersion'] 63 // $Import->UpdateTranslated(); 64 // echo $_GET['id']; 65 // WriteLog('Plnění databáze z příkazové řádky', LOG_TYPE_MODERATOR); 66 // $Output .= '</div>'; 100 67 } 101 68 69 $Output = str_replace('<br />',' 70 ',$Output); 102 71 echo($Output); 103 72 //ShowFooter();
Note:
See TracChangeset
for help on using the changeset viewer.