1a0cd8c78SSzymon Olewniczak<?php 2a0cd8c78SSzymon Olewniczak 3a0cd8c78SSzymon Olewniczakclass renderer_plugin_bez_xhtmlmail extends Doku_Renderer_xhtml { 4a0cd8c78SSzymon Olewniczak 5a0cd8c78SSzymon Olewniczak /** @var array Settings, control the behavior of the renderer */ 6a0cd8c78SSzymon Olewniczak public $info = array( 7a0cd8c78SSzymon Olewniczak 'cache' => true, // may the rendered result cached? 8a0cd8c78SSzymon Olewniczak 'toc' => true, // render the TOC? 9a0cd8c78SSzymon Olewniczak 'img' => array(), //images to attach in mail 10a0cd8c78SSzymon Olewniczak ); 11a0cd8c78SSzymon Olewniczak 12a0cd8c78SSzymon Olewniczak /** 13a0cd8c78SSzymon Olewniczak * Our own format 14a0cd8c78SSzymon Olewniczak * 15a0cd8c78SSzymon Olewniczak * @return string 16a0cd8c78SSzymon Olewniczak */ 17a0cd8c78SSzymon Olewniczak function getFormat() { 18a0cd8c78SSzymon Olewniczak return 'bez_xhtmlmail'; 19a0cd8c78SSzymon Olewniczak } 20a0cd8c78SSzymon Olewniczak 21a0cd8c78SSzymon Olewniczak /** 22a0cd8c78SSzymon Olewniczak * Renders internal and external media 23a0cd8c78SSzymon Olewniczak * 24a0cd8c78SSzymon Olewniczak * @author Andreas Gohr <andi@splitbrain.org> 25a0cd8c78SSzymon Olewniczak * @param string $src media ID 26a0cd8c78SSzymon Olewniczak * @param string $title descriptive text 27a0cd8c78SSzymon Olewniczak * @param string $align left|center|right 28a0cd8c78SSzymon Olewniczak * @param int $width width of media in pixel 29a0cd8c78SSzymon Olewniczak * @param int $height height of media in pixel 30a0cd8c78SSzymon Olewniczak * @param string $cache cache|recache|nocache 31a0cd8c78SSzymon Olewniczak * @param bool $render should the media be embedded inline or just linked 32a0cd8c78SSzymon Olewniczak * @return string 33a0cd8c78SSzymon Olewniczak */ 34*17e5ba2eSSzymon Olewniczak public function _media($src, $title = null, $align = null, $width = null, 35a0cd8c78SSzymon Olewniczak $height = null, $cache = null, $render = true) { 36a0cd8c78SSzymon Olewniczak 37a0cd8c78SSzymon Olewniczak $ret = ''; 38a0cd8c78SSzymon Olewniczak 39a0cd8c78SSzymon Olewniczak list($ext, $mime) = mimetype($src); 40a0cd8c78SSzymon Olewniczak if(substr($mime, 0, 5) == 'image') { 41a0cd8c78SSzymon Olewniczak // first get the $title 42a0cd8c78SSzymon Olewniczak if(!is_null($title)) { 43a0cd8c78SSzymon Olewniczak $title = $this->_xmlEntities($title); 44a0cd8c78SSzymon Olewniczak } elseif($ext == 'jpg' || $ext == 'jpeg') { 45a0cd8c78SSzymon Olewniczak //try to use the caption from IPTC/EXIF 46a0cd8c78SSzymon Olewniczak require_once(DOKU_INC.'inc/JpegMeta.php'); 47a0cd8c78SSzymon Olewniczak $jpeg = new JpegMeta(mediaFN($src)); 48a0cd8c78SSzymon Olewniczak if($jpeg !== false) $cap = $jpeg->getTitle(); 49a0cd8c78SSzymon Olewniczak if(!empty($cap)) { 50a0cd8c78SSzymon Olewniczak $title = $this->_xmlEntities($cap); 51a0cd8c78SSzymon Olewniczak } 52a0cd8c78SSzymon Olewniczak } 53a0cd8c78SSzymon Olewniczak if(!$render) { 54a0cd8c78SSzymon Olewniczak // if the picture is not supposed to be rendered 55a0cd8c78SSzymon Olewniczak // return the title of the picture 56*17e5ba2eSSzymon Olewniczak if($title === null || $title === "") { 57a0cd8c78SSzymon Olewniczak // just show the sourcename 58*17e5ba2eSSzymon Olewniczak $title = $this->_xmlEntities(\dokuwiki\Utf8\PhpString::basename(noNS($src))); 59a0cd8c78SSzymon Olewniczak } 60a0cd8c78SSzymon Olewniczak return $title; 61a0cd8c78SSzymon Olewniczak } 62a0cd8c78SSzymon Olewniczak //add image tag 63*17e5ba2eSSzymon Olewniczak $ret .= '<img src="@MEDIA(' . $src . ')@"'; 64a0cd8c78SSzymon Olewniczak $ret .= ' class="media'.$align.'"'; 65a0cd8c78SSzymon Olewniczak 66a0cd8c78SSzymon Olewniczak if($title) { 67a0cd8c78SSzymon Olewniczak $ret .= ' title="'.$title.'"'; 68a0cd8c78SSzymon Olewniczak $ret .= ' alt="'.$title.'"'; 69a0cd8c78SSzymon Olewniczak } else { 70a0cd8c78SSzymon Olewniczak $ret .= ' alt=""'; 71a0cd8c78SSzymon Olewniczak } 72a0cd8c78SSzymon Olewniczak 73a0cd8c78SSzymon Olewniczak if(!is_null($width)) 74a0cd8c78SSzymon Olewniczak $ret .= ' width="'.$this->_xmlEntities($width).'"'; 75a0cd8c78SSzymon Olewniczak 76a0cd8c78SSzymon Olewniczak if(!is_null($height)) 77a0cd8c78SSzymon Olewniczak $ret .= ' height="'.$this->_xmlEntities($height).'"'; 78a0cd8c78SSzymon Olewniczak 79a0cd8c78SSzymon Olewniczak $ret .= ' />'; 80a0cd8c78SSzymon Olewniczak 81a0cd8c78SSzymon Olewniczak } elseif(media_supportedav($mime, 'video') || media_supportedav($mime, 'audio')) { 82a0cd8c78SSzymon Olewniczak // first get the $title 83*17e5ba2eSSzymon Olewniczak $title = !is_null($title) ? $title : false; 84a0cd8c78SSzymon Olewniczak if(!$render) { 85a0cd8c78SSzymon Olewniczak // if the file is not supposed to be rendered 86a0cd8c78SSzymon Olewniczak // return the title of the file (just the sourcename if there is no title) 87*17e5ba2eSSzymon Olewniczak return $this->_xmlEntities($title ? $title : \dokuwiki\Utf8\PhpString::basename(noNS($src))); 88a0cd8c78SSzymon Olewniczak } 89a0cd8c78SSzymon Olewniczak 90a0cd8c78SSzymon Olewniczak $att = array(); 91a0cd8c78SSzymon Olewniczak $att['class'] = "media$align"; 92a0cd8c78SSzymon Olewniczak if($title) { 93a0cd8c78SSzymon Olewniczak $att['title'] = $title; 94a0cd8c78SSzymon Olewniczak } 95a0cd8c78SSzymon Olewniczak 96a0cd8c78SSzymon Olewniczak if(media_supportedav($mime, 'video')) { 97a0cd8c78SSzymon Olewniczak //add video 98a0cd8c78SSzymon Olewniczak $ret .= $this->_video($src, $width, $height, $att); 99a0cd8c78SSzymon Olewniczak } 100a0cd8c78SSzymon Olewniczak if(media_supportedav($mime, 'audio')) { 101a0cd8c78SSzymon Olewniczak //add audio 102a0cd8c78SSzymon Olewniczak $ret .= $this->_audio($src, $att); 103a0cd8c78SSzymon Olewniczak } 104a0cd8c78SSzymon Olewniczak 105a0cd8c78SSzymon Olewniczak } elseif($mime == 'application/x-shockwave-flash') { 106a0cd8c78SSzymon Olewniczak if(!$render) { 107a0cd8c78SSzymon Olewniczak // if the flash is not supposed to be rendered 108a0cd8c78SSzymon Olewniczak // return the title of the flash 109a0cd8c78SSzymon Olewniczak if(!$title) { 110a0cd8c78SSzymon Olewniczak // just show the sourcename 111*17e5ba2eSSzymon Olewniczak $title = \dokuwiki\Utf8\PhpString::basename(noNS($src)); 112a0cd8c78SSzymon Olewniczak } 113a0cd8c78SSzymon Olewniczak return $this->_xmlEntities($title); 114a0cd8c78SSzymon Olewniczak } 115a0cd8c78SSzymon Olewniczak 116a0cd8c78SSzymon Olewniczak $att = array(); 117a0cd8c78SSzymon Olewniczak $att['class'] = "media$align"; 118a0cd8c78SSzymon Olewniczak if($align == 'right') $att['align'] = 'right'; 119a0cd8c78SSzymon Olewniczak if($align == 'left') $att['align'] = 'left'; 120a0cd8c78SSzymon Olewniczak $ret .= html_flashobject( 121a0cd8c78SSzymon Olewniczak ml($src, array('cache' => $cache), true, '&'), $width, $height, 122a0cd8c78SSzymon Olewniczak array('quality' => 'high'), 123a0cd8c78SSzymon Olewniczak null, 124a0cd8c78SSzymon Olewniczak $att, 125a0cd8c78SSzymon Olewniczak $this->_xmlEntities($title) 126a0cd8c78SSzymon Olewniczak ); 127a0cd8c78SSzymon Olewniczak } elseif($title) { 128a0cd8c78SSzymon Olewniczak // well at least we have a title to display 129a0cd8c78SSzymon Olewniczak $ret .= $this->_xmlEntities($title); 130a0cd8c78SSzymon Olewniczak } else { 131a0cd8c78SSzymon Olewniczak // just show the sourcename 132*17e5ba2eSSzymon Olewniczak $ret .= $this->_xmlEntities(\dokuwiki\Utf8\PhpString::basename(noNS($src))); 133a0cd8c78SSzymon Olewniczak } 134a0cd8c78SSzymon Olewniczak 135a0cd8c78SSzymon Olewniczak return $ret; 136a0cd8c78SSzymon Olewniczak } 137a0cd8c78SSzymon Olewniczak}