/** * Imports board attachments. * * @return void */ public function importInfinityBoardAssets() { $this->info("\tImporting board assets ..."); BoardAsset::whereDoesntHave('flagPosts')->forceDelete(); Board::orderBy('board_uri', 'asc')->chunk(1, function ($boards) { foreach ($boards as $board) { $this->line("\t\tImporting assets from /{$board->board_uri}/"); $flagsMade = 0; $bannersMade = 0; # FLAGS $flagsPath = "{$this->targetLocation}/static/custom-flags/{$board->board_uri}/"; $flagSerPath = "{$this->targetLocation}/{$board->board_uri}/flags.ser"; $flags = []; if (file_exists($flagSerPath)) { try { $flags = @unserialize(@file_get_contents("{$this->targetLocation}/{$board->board_uri}/flags.ser")); } catch (\Exception $e) { $this->warn("\t\t\tFailed to unserialize flags.ser"); } if (is_array($flags) && count($flags)) { foreach ($flags as $flagFile => $flagName) { $flag = new File("{$flagsPath}{$flagFile}.png", false); if ($flag->isReadable()) { $storage = FileStorage::storeUpload($flag); $asset = $board->assets()->create(['file_id' => $storage->file_id, 'asset_type' => "board_flags", 'asset_name' => $flagName]); ++$flagsMade; } } } } # BANNERS $bannersPath = "{$this->targetLocation}/static/banners/{$board->board_uri}/"; if (is_readable($bannersPath)) { $banners = array_filter(scandir($bannersPath), function ($item) use($bannersPath) { return !is_dir("{$bannersPath}{$item}"); }); foreach ($banners as $bannerName) { $banner = new File("{$bannersPath}{$bannerName}", false); if ($banner->isReadable() && !!FileFacade::get($banner)) { $storage = FileStorage::storeUpload($banner); $asset = $board->assets()->create(['file_id' => $storage->file_id, 'asset_type' => "board_banner", 'asset_name' => null]); ++$bannersMade; } } } $this->line("\t\tImported {$flagsMade} flags and {$bannersMade} banners."); } }); }