Changeset 630 for trunk/Modules/Import


Ignore:
Timestamp:
Dec 8, 2013, 6:43:40 PM (11 years ago)
Author:
maron
Message:
  • Fixed: Load data from arrays only if array exists
  • Fixed: Import/cmd.php
  • Fixed: patch in Import/Import.php
  • Fixed: Can compare text with not complete
Location:
trunk/Modules/Import
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Modules/Import/Import.php

    r578 r630  
    1515                $this->License = 'GNU/GPL';
    1616                $this->Description = 'Support for import of data.';
    17                 $this->Dependencies = array();
     17                $this->Dependencies = array(); 
    1818        }
    1919
     
    6161      // Update existed text
    6262      $DbRow2 = $DbResult2->fetch_assoc();
    63       if($this->HaveSameText($this->Group, $DbRow2, $Value))
     63      if($this->HaveSameText($this->Group, $DbRow2, $Value) )
    6464      {
    6565        if($DbRow2['VersionEnd'] <> $this->Version['BuildNumber'])
     
    6969        } else echo('. ');
    7070      } 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'].'&amp;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'].'&amp;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'].' ');
    8385      }       
    8486    } else
     
    115117  {
    116118    global $TranslationTree, $PatchVersion;
    117        
    118119    $Output = 'Načítání textů z LUA souboru...';
     120                               
    119121    if(($this->Group['LuaFileName'] != '') and ($this->Group['TablePrefix'] != ''))
    120122    {
     123
    121124        $Output .= '<br />'.$this->Group['Name'].'<br />';
    122125        if($this->Group['LastVersion'] < $this->Version['BuildNumber'] + 1)
    123126        {
    124127          $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');
    126130          $this->NewItemCount = 0;
    127131          $Count = 0;
     
    161165      } else $Output .= ShowMessage('Není definováno jméno zdrojového souboru', MESSAGE_CRITICAL);
    162166    $Output .= ShowMessage('Dokončeno.');
     167    return ($Output);
    163168  }
    164169 
     
    170175    foreach($TranslationTree as $Group) 
    171176    {
    172       $Output .= '<br />'.$Group['Name'].' ';     
     177      $Output .= '<br />'.$Group['Name'].' '; 
     178      $do = true;   
     179      while($do)
     180      {
    173181      $DbResult = $this->System->Database->query('SELECT `gs_tran`.`ID`, '.
    174182        '`gs_tran`.`VersionEnd` AS `VersionEnd_tran`, '.
     
    177185        '` AS `gs_orig` ON `gs_orig`.`ID` = `gs_tran`.`Take` WHERE '.
    178186        '`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      }
    184194      $Output .= '<strong>Dokončeno.</strong>';
    185195    }
     
    255265     
    256266      $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);
    258268      $ItemCount = $DBCFile->GetRecordCount();
    259269      $this->NewItemCount = 0;
     
    305315    $Output= '';
    306316    $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');
    308318    $this->NewItemCount = 0;
    309319    $Count = 0;
  • trunk/Modules/Import/cmd.php

    r609 r630  
    11<?php
    22
    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');
     3include_once('../../includes/global.php');
     4include_once('../../includes/dbc.php');
     5include_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__;
    912
    1013$Output = '';
    1114
    12 if(!Licence(LICENCE_ADMIN))
     15if(defined('STDIN') == false)
    1316{
    1417  $Output = T('Access denied');
    15 }
     18  exit($Output);
     19}
    1620
    1721foreach($_SERVER['argv'] as $parameter)
     
    2630}
    2731
    28 if(!array_key_exists('source', $_GET))
     32if(!array_key_exists('id', $_GET))
    2933{
    3034  $Output .= '
     
    33372. Nejprve je potreba získat zdrojová data. Není zapotrebí mít všechny typy textu.
    3438  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.
    38414. V nastavení "wowpreklad/includes/config.php" nastavíme nejvyžší verzi na verzi, kterou hodláme importovat.
    39425. 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.
     
    4346  Parametry:
    4447  ';
    45   $Output .= 'source=dbc  ...............DBC soubory
    46   ';
    47   $Output .= 'source=sql_mangos  ........SQL MaNGOS
    48   ';
    49   $Output .= 'source=lua  ...............LUA soubory
    50   ';
    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    }
    5255
    53 ';
    5456  $Output .= 'aktuálně nastavená importovávaná verze: '.$Config['Web']['GameVersion'].'
    5557';
    5658} else
    5759{
    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>';
    10067}
    10168
     69$Output = str_replace('<br />','
     70',$Output);
    10271echo($Output); 
    10372//ShowFooter();     
Note: See TracChangeset for help on using the changeset viewer.