예제 #1
0
 public function __construct(SetDB $setDB, ArtDB $artDB)
 {
     global $config;
     $this->setDB = $setDB;
     $this->artDB = $artDB;
     // Load english cards.
     echo 'Loading card data';
     $file = fopen_utf8('data/cards.csv', 'r');
     if (!$file) {
         error('Unable to open file: data/cards.csv');
     }
     $i = 0;
     while (($row = fgetcsv($file, 6000, ',')) !== FALSE) {
         if ($i++ % 400 == 0) {
             echo '.';
         }
         $card = CardDB::rowToCard($row);
         // Ignore cards with an unknown set.
         $card->set = $setDB->normalize($card->set);
         if (!$card->set) {
             continue;
         }
         $title = strtolower($card->title);
         if (!@$this->titleToCards[$title]) {
             $this->titleToCards[$title] = array();
         }
         $this->titleToCards[(string) $title][] = $card;
     }
     fclose($file);
     echo "\n";
     // Load foreign card data.
     $language = strtolower($config['output.language']);
     if ($language && $language != 'english') {
         echo "Loading {$language} card data";
         $file = fopen_utf8("data/cards-{$language}.csv", 'r');
         if (!$file) {
             error("Unable to open file: data/cards-{$language}.csv");
         }
         $i = 0;
         while (($row = fgetcsv($file, 6000, ',')) !== FALSE) {
             if ($i++ % 400 == 0) {
                 echo '.';
             }
             // Overwrite some of the english card values with the foreign values.
             $englishTitle = strtolower($row[0]);
             $cards = @$this->titleToCards[(string) $englishTitle];
             if (!$cards) {
                 //print_r($row);
                 echo "\nError matching card data for card: {$row['0']}";
                 continue;
                 // Skip errors
             }
             foreach ($cards as $card) {
                 CardDB::applyLanguageRowToCard($row, $card);
             }
         }
         fclose($file);
         echo "\n";
         if (!$config['output.english.flavor.text']) {
             echo "Loading {$language} card flavor data";
             $file = fopen_utf8("data/cards-{$language}-flavor.csv", 'r');
             if (!$file) {
                 echo "\nNo localized flavor for language: {$language}";
             } else {
                 $i = 0;
                 while (($row = fgetcsv($file, 6000, ',')) !== FALSE) {
                     if ($i++ % 400 == 0) {
                         echo '.';
                     }
                     // Overwrite some of the english card values with the foreign values.
                     $englishTitle = strtolower($row[0]);
                     $cards = @$this->titleToCards[(string) $englishTitle];
                     if (!$cards) {
                         //print_r($row);
                         echo "\nError matching card flavor for card: {$row['0']}";
                         continue;
                         // Skip errors.
                     }
                     // Find the card from needed edition and apply localized flavor.
                     foreach ($cards as $card) {
                         if ($card->set == $setDB->normalize($row[1])) {
                             $card->flavor = $row[2];
                             break;
                         }
                     }
                 }
                 fclose($file);
                 echo "\n";
             }
         }
     }
 }
예제 #2
0
while (!feof($schemesFile)) {
    fwrite($cardsFile, fgets($schemesFile));
}
fclose($schemesFile);
// Copy planes.
echo "Copying Sorcerer's Apprentice Cards...\n";
$sorcFile = fopen_utf8('misc/import/sorcerersApprentice.csv', 'rb');
if (!$sorcFile) {
    error('Unable to read Sorcerer\'s Apprentice Cards CSV file.');
}
while (!feof($sorcFile)) {
    fwrite($cardsFile, fgets($sorcFile));
}
fclose($sorcFile);
// Write masterbase.
$masterBase = new MasterBase($files[0]);
$cards = $masterBase->cards;
foreach ($cards as $card) {
    writeCsvRow($cardsFile, CardDB::cardToRow($card));
}
fclose($cardsFile);
echo "\n" . count($cards) . " cards processed.\n";
echo "Temporary file complete.\n";
if (file_exists('data/cards.csv')) {
    echo "Backing up file \"data/cards.csv\" to \"data/cards.csv.bak\"...\n";
    @unlink('data/cards.csv.bak');
    @rename('data/cards.csv', 'data/cards.csv.bak');
}
echo "Moving temporary file to \"data/cards.csv\"...\n";
rename('data/cards.csv.temp', 'data/cards.csv');
echo "Import complete.\n";
예제 #3
0
파일: mws2lang.php 프로젝트: GarikRC/arcane
	array_slice($argv, 1),
	'Drag and drop an MWS masterbase CSV file here and press enter...'
);

echo 'Enter the name of the language: ';
$language = strtolower(trim(fgets(STDIN)));

echo "Creating temporary file: data/cards-$language.csv.temp\n";
$cardsFile = fopen_utf8("data/cards-$language.csv.temp", 'w+');
if (!$cardsFile) error("Unable to write CSV file: data/cards-$language.csv.temp");

// Write masterbase.
$masterBase = new MasterBase($files[0]);
$cards = $masterBase->cards;
foreach ($cards as $card)
	writeCsvRow($cardsFile, CardDB::cardToLanguageRow($card));

fclose($cardsFile);

echo "\n" . count($cards) . " cards processed.\n";
echo "Temporary file complete.\n";

if (file_exists("data/cards-$language.csv")) {
	echo "Backing up file \"data/cards-$language.csv\" to \"data/cards-$language.csv.bak\"...\n";
	@unlink("data/cards-$language.csv.bak");
	@rename("data/cards-$language.csv", "data/cards-$language.csv.bak");
}

echo "Moving temporary file to \"data/cards-$language.csv\"...\n";
rename("data/cards-$language.csv.temp", "data/cards-$language.csv");