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; }