Ignore:
Timestamp:
Apr 25, 2010, 1:12:04 PM (15 years ago)
Author:
george
Message:
  • Přidáno: Podpora pro DBC soubory s vícesloupcovým indexem (konktérně ItemSubClass.dbc). V databázi u skupin nově sloupce DBCIndex, který může obsahovat více indexů oddělených čárkou. Z nich se vygeneruje pak při importu hodnota do speciálně vytvořeného sloupce PrimaryKeyItem kombinace hodnot zadaných sloupců. Klasicky je PrimaryKeyItem nastaven na Entry, zde speciálně na textový sloupce Index v tabulce TextItemSubClass, kde jsou ukládány hodnoty ve tvaru 1_2. Tento mechanizmus je již využíván u SQL tabulek NPCOption a Command MaNGOSu.
  • Upraveno: Při ukládání nastavení záložek exportu zobrazovat informační zprávu o uložení.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/export/export.php

    r460 r476  
    112112          $Values = substr($Values, 2);
    113113
     114          // Get multicolumn index
    114115          $ColumnItems = explode(',', $Group['MangosTableIndex']);
    115116          if(count($ColumnItems) > 1)
     
    121122          } else $Where = '`'.$Group['MangosTableIndex'].'`';
    122123          $Where .= ' = "'.$Line[$Group['PrimaryKeyItem']].'";';
     124         
    123125          $Line = 'UPDATE `'.$Group['MangosTable'].'` SET '.$Values.' WHERE '.$Where;
    124126          $Line = str_replace("\n", '\n', $Line);
     
    266268        $DbResult2 = $this->Database->query($this->BuildQuery($Group));
    267269        while($DbRow = $DbResult2->fetch_assoc())
    268           $LookupTable[$DbRow['Entry']] = $DbRow;
     270          $LookupTable[$DbRow[$Group['PrimaryKeyItem']]] = $DbRow;
    269271     
    270272        // Open original DBC file
     
    288290        {
    289291          $Line = $SourceDBCFile->GetLine($Row);
    290           foreach($TranslationTree[$Group['Id']]['Items'] as $GroupItem)
    291           {
    292             if(array_key_exists($GroupItem['Id'], $ColumnIndexes) and array_key_exists($Line[0], $LookupTable))
    293               $Line[$ColumnIndexes[$GroupItem['Id']]] = $LookupTable[$Line[0]][$GroupItem['Column']];
     292                   
     293          // Get multicolumn index value
     294          $PrimaryKeyItem = '';
     295          $ColumnItems = explode(',', $Group['DBCIndex']);
     296          if(count($ColumnItems) > 1)
     297          {
     298            foreach($ColumnItems as $ColumnItem)
     299              $PrimaryKeyItem .= $Line[$ColumnItem].'_';
     300            $PrimaryKeyItem = substr($PrimaryKeyItem, 0, -1);
     301          } else $PrimaryKeyItem = $Line[$Group['DBCIndex']];
     302
     303          if(array_key_exists($PrimaryKeyItem, $LookupTable))
     304          {           
     305            // Replace text columns
     306            $LookupTableItem = $LookupTable[$PrimaryKeyItem];         
     307            foreach($TranslationTree[$Group['Id']]['Items'] as $GroupItem)
     308            {
     309              if(array_key_exists($GroupItem['Id'], $ColumnIndexes))
     310                $Line[$ColumnIndexes[$GroupItem['Id']]] = $LookupTableItem[$GroupItem['Column']];
     311            }
    294312          }
    295313          $NewDBCFile->SetLine($Row, $Line);
Note: See TracChangeset for help on using the changeset viewer.