public function saveEmbeddedAsset(EmbeddedAssetsModel $media, $folderId)
{
$event = new Event($this, array('media' => $media));
// Purify HTML is necessary
if ($media->html && !$media->safeHtml) {
$media->safeHtml = $this->_purifier->purify($media->html);
}
$this->onBeforeSaveEmbed($event);
if ($event->performAction) {
// Create transaction only if this isn't apart of an already occurring transaction
$transaction = craft()->db->getCurrentTransaction() ? false : craft()->db->beginTransaction();
try {
$asset = $this->_storeFile($media, $folderId);
$asset->getContent()->title = $media->title;
craft()->assets->storeFile($asset);
$media->id = $asset->id;
if ($transaction) {
$transaction->commit();
}
} catch (\Exception $e) {
EmbeddedAssetsPlugin::log("Error saving embedded asset (\"{$e->getMessage()}\")", LogLevel::Error);
if ($transaction) {
$transaction->rollback();
}
throw $e;
}
$cacheKey = EmbeddedAssetsPlugin::getCacheKey();
craft()->cache->delete($cacheKey);
$this->onSaveEmbed(new Event($this, array('media' => $media, 'asset' => $asset)));
}
return true;
}