Changeset 297 for trunk/includes/dbc.php


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.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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}
Note: See TracChangeset for help on using the changeset viewer.