public function executeGetDmMediaMetadata(dmWebRequest $request) { if (!($mediaId = $request->getParameter('media_id'))) { return $this->forward404(); } if (dmString::startsWith($mediaId, 'page:')) { if (!$this->isAuthorized('page')) { return $this->forwardSecure(); } $page = dmDb::table('DmPage')->findOneBy('id', str_replace('page:', '', $mediaId)); return $this->renderJson(array('src' => $this->getHelper()->link($page)->getHref(), 'type' => 'page', 'id' => trim(str_replace('page:', '', $mediaId)), 'title' => $page->get('title'))); } elseif (dmString::startsWith($mediaId, 'media:')) { if (!$this->isAuthorized('media')) { return $this->forwardSecure(); } $id = trim(str_replace('media:', '', $mediaId)); $media = dmDb::table('DmMedia')->findOneBy('id', $id); $size = explode('x', $media->get('dimensions')); return $this->renderJson(array('id' => $media->get('id'), 'src' => '/' . $media->getWebPath(), 'legend' => $media->get('legend'), 'mime' => $media->get('mime'), 'size' => $media->get('size'), 'width' => isset($size[0]) ? $size[0] : '', 'height' => isset($size[1]) ? $size[1] : '', 'type' => 'media')); } else { return $this->forward404(); } }
protected function updateFilePath($file, Swift_Message $message, $templateName) { $id = str_replace('dmFile-', '', $file->id); if (!$id) { $id = $file->getAttribute('data-dm-file-id'); } if (is_numeric($id)) { $mediaRecord = dmDb::table('dmMedia')->findOneByIdWithFolder($id); if ($mediaRecord) { $embed = false; $embedExtensions = array_map('trim', explode(',', dmConfig::get('mail_template_embed_file_types', 'doc,docx,xls,xlsx,ppt,pptx,pdf,mdb'))); foreach ($embedExtensions as $ext) { if (dmString::endsWith($file->href, '.' . $ext, false)) { $embed = true; break; } } if (dmConfig::get('mail_template_embed_local_files_as_attachments', true) && $embed) { try { $file->href = $message->embed(Swift_EmbeddedFile::fromPath(dmOs::join(sfConfig::get('sf_web_dir'), $mediaRecord->getWebPath()))); } catch (Exception $e) { $this->logError($templateName, 'local', 'file', $file->href); $file->href = ''; } } else { if (file_exists(dmOs::join(sfConfig::get('sf_web_dir'), $link = $mediaRecord->getWebPath()))) { $file->href = $this->basePath . '/' . $mediaRecord->getWebPath(); } else { $this->logError($templateName, 'local', 'file', $file->href); $file->href = ''; } } return $file; } } if (dmString::startsWith($file->href, sfConfig::get('sf_root_dir')) || dmString::startsWith($file->href, $this->basePath)) { return $this->updateLocalFilePath($file, $message, $templateName); } else { return $this->updateRemoteFilePath($file, $message, $templateName); } }