public static function populateFromAsset(AssetFileModel $asset) { if ($asset->kind === 'json' && strpos($asset->filename, EmbeddedAssetsPlugin::getFileNamePrefix(), 0) === 0) { try { $rawData = craft()->embeddedAssets->readAssetFile($asset); if ($rawData) { $data = JsonHelper::decode($rawData); if ($data['__embeddedasset__']) { unset($data['__embeddedasset__']); $embed = new EmbeddedAssetsModel(); $embed->id = $asset->id; foreach ($embed->attributeNames() as $key) { if (isset($data[$key])) { $embed->{$key} = $data[$key]; } } // For embedded assets saved with version 0.2.1 or below, this will provide a usable fallback if (empty($embed->requestUrl)) { $embed->requestUrl = $embed->url; } return $embed; } } } catch (\Exception $e) { EmbeddedAssetsPlugin::log("Error reading embedded asset data on asset {$asset->id} (\"{$e->getMessage()}\")", LogLevel::Error); return null; } } return null; }