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