Skip to content

Commit 509845e

Browse files
authored
Fix asset import bug (#227)
1 parent 1cd68ae commit 509845e

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

src/Assets/Asset.php

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Illuminate\Support\Facades\Cache;
77
use Statamic\Assets\Asset as FileAsset;
88
use Statamic\Assets\AssetUploader as Uploader;
9+
use Statamic\Contracts\Assets\Asset as AssetContract;
910
use Statamic\Facades\Blink;
1011
use Statamic\Facades\Path;
1112
use Statamic\Support\Arr;
@@ -115,15 +116,26 @@ public function writeMeta($meta)
115116
{
116117
$meta['data'] = Arr::removeNullValues($meta['data']);
117118

119+
self::makeModelFromContract($this, $meta);
120+
121+
Blink::put('eloquent-asset-meta-exists-'.$this->id(), true);
122+
}
123+
124+
public static function makeModelFromContract(AssetContract $source, $meta = [])
125+
{
126+
if (! $meta) {
127+
$meta = $source->meta();
128+
}
129+
118130
$model = app('statamic.eloquent.assets.model')::firstOrNew([
119-
'container' => $this->containerHandle(),
120-
'folder' => $this->folder(),
121-
'basename' => $this->basename(),
131+
'container' => $source->containerHandle(),
132+
'folder' => $source->folder(),
133+
'basename' => $source->basename(),
122134
])->fill([
123135
'meta' => $meta,
124-
'filename' => $this->filename(),
125-
'extension' => $this->extension(),
126-
'path' => $this->path(),
136+
'filename' => $source->filename(),
137+
'extension' => $source->extension(),
138+
'path' => $source->path(),
127139
]);
128140

129141
// Set initial timestamps.
@@ -134,7 +146,7 @@ public function writeMeta($meta)
134146

135147
$model->save();
136148

137-
Blink::put('eloquent-asset-meta-exists-'.$this->id(), true);
149+
return $model;
138150
}
139151

140152
public function metaPath()

src/Commands/ImportAssets.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44

55
use Illuminate\Console\Command;
66
use Illuminate\Support\Facades\Facade;
7+
use Statamic\Assets\AssetContainerContents;
78
use Statamic\Assets\AssetRepository;
89
use Statamic\Console\RunsInPlease;
9-
use Statamic\Contracts\Assets\Asset as AssetContract;
10+
use Statamic\Contracts\Assets\Asset;
1011
use Statamic\Contracts\Assets\AssetContainer as AssetContainerContract;
1112
use Statamic\Contracts\Assets\AssetContainerRepository as AssetContainerRepositoryContract;
1213
use Statamic\Contracts\Assets\AssetRepository as AssetRepositoryContract;
13-
use Statamic\Eloquent\Assets\Asset;
14+
use Statamic\Eloquent\Assets\Asset as EloquentAsset;
1415
use Statamic\Eloquent\Assets\AssetContainer;
1516
use Statamic\Facades\Asset as AssetFacade;
1617
use Statamic\Facades\AssetContainer as AssetContainerFacade;
17-
use Statamic\Facades\YAML;
1818
use Statamic\Stache\Repositories\AssetContainerRepository;
1919
use Statamic\Statamic;
2020

@@ -61,6 +61,10 @@ private function useDefaultRepositories()
6161

6262
app()->bind(AssetContainerContract::class, AssetContainer::class);
6363
app()->bind(AssetContract::class, Asset::class);
64+
65+
app()->bind(AssetContainerContents::class, function ($app) {
66+
return new AssetContainerContents();
67+
});
6468
}
6569

6670
private function importAssetContainers()
@@ -89,10 +93,7 @@ private function importAssets()
8993
$assets = AssetFacade::all();
9094

9195
$this->withProgressBar($assets, function ($asset) {
92-
if ($contents = $asset->disk()->get($path = $asset->metaPath())) {
93-
$metadata = YAML::file($path)->parse($contents);
94-
$asset->writeMeta($metadata);
95-
}
96+
EloquentAsset::makeModelFromContract($asset);
9697
});
9798

9899
$this->newLine();

0 commit comments

Comments
 (0)