<-->\n"; // not for IE foreach ($types as $type) { $ret.= newmail_media_object($object,$type,$path,$args,$addsuffix); } if (isset($newmail_mediacompat_mode) && $newmail_mediacompat_mode) $ret.= newmail_media_embed($object,$types[0],$path,$args,$addsuffix); // add $extra code inside objects if ($extra!='') $ret.=$extra . "\n"; if (isset($newmail_mediacompat_mode) && $newmail_mediacompat_mode) $ret.= newmail_media_embed_close($types[0]); foreach (array_reverse($types) as $type) { $ret.= newmail_media_object_close($type); } $ret.= " \n"; // end non-IE mode // close IE object $ret.= newmail_media_object_ie_close($types[0]); return $ret; } /** * Creates object tags of multimedia object for browsers that comply to w3.org * specifications. * * Warnings: * * Returned string does not contain html closing tag. * * This is internal function, use newmail_media_objects() instead * @link http://www.w3.org/TR/html4/struct/objects.html#edef-OBJECT W3.org specs * @param string $object object name * @param integer $type media object type * @param string $path URL to media object * @param array $args media object attributes * @param bool $addsuffix controls addition of suffix to media object url * @return string object html tags and attributes required by selected media type. */ function newmail_media_object($object,$type,$path,$args=array(),$addsuffix=true) { $ret_w3=''; $suffix=''; $sArgs=newmail_media_prepare_args($args); switch ($type) { case SM_NEWMAIL_FILETYPE_SWF: if ($addsuffix) $suffix='.swf'; $ret_w3 = '' . "\n"; break; case SM_NEWMAIL_FILETYPE_WAV: if ($addsuffix) $suffix='.wav'; $ret_w3 = '' . "\n"; break; case SM_NEWMAIL_FILETYPE_OGG: if ($addsuffix) $suffix='.ogg'; $ret_w3 = '' . "\n"; break; case SM_NEWMAIL_FILETYPE_MP3: if ($addsuffix) $suffix='.mp3'; $ret_w3 = '' . "\n"; break; case SM_NEWMAIL_FILETYPE_SVG: if ($addsuffix) $suffix='.svg'; $ret_w3 = '' . "\n"; break; default: $ret_w3=''; } return $ret_w3; } /** * Creates multimedia object tags for Internet Explorer (Win32) * * Warning: * * Returned string does not contain html closing tag, because * this multimedia object can include other media objects. * * This is internal function, use newmail_media_objects() instead * * @param string $object object name * @param integer $type media object type * @param string $path URL to media object * @param array $args media object attributes * @param bool $addsuffix controls addition of suffix to media object url * @return string object html tags and attributes required by selected media type. */ function newmail_media_object_ie($object,$type,$path,$args=array(),$addsuffix) { $ret_ie=''; $suffix=''; $sArgs=newmail_media_prepare_args($args); switch ($type) { case SM_NEWMAIL_FILETYPE_SWF: if ($addsuffix) $suffix='.swf'; $ret_ie ='\n" .'\n" .'' . "\n"; break; case SM_NEWMAIL_FILETYPE_WAV: if ($addsuffix) $suffix='.wav'; $ret_ie ='' ."\n" .'\n"; break; case SM_NEWMAIL_FILETYPE_MP3: if ($addsuffix) $suffix='.mp3'; $ret_ie ='' ."\n" .'\n"; break; case SM_NEWMAIL_FILETYPE_OGG: case SM_NEWMAIL_FILETYPE_SVG: default: $ret_ie=''; } return $ret_ie; } /** * Creates embed tags of multimedia object * * docs about embed * Apple: http://www.apple.com/quicktime/authoring/embed.html * * Warnings: * * Returned string does not contain html closing tag. * * embed tags will be created by newmail_media_objects() only * when $newmail_mediacompat_mode option is enabled. Option is not * enabled by default in order to comply to w3.org specs. * * This is internal function, use newmail_media_objects() instead * @link http://www.apple.com/quicktime/authoring/embed.html Info about embed tag * @param string $object object name * @param integer $type media object type * @param string $path URL to media object * @param array $args media object attributes * @param bool $addsuffix controls addition of suffix to media object url * @return string embed html tags and attributes required by selected media type. */ function newmail_media_embed($object,$type,$path,$args=array(),$addsuffix=true) { $ret_embed=''; $suffix=''; $sArgs=newmail_media_prepare_args($args); switch ($type) { case SM_NEWMAIL_FILETYPE_SWF: if ($addsuffix) $suffix='.swf'; $ret_embed='' . "\n"; break; case SM_NEWMAIL_FILETYPE_WAV: if ($addsuffix) $suffix='.wav'; $ret_embed='' . "\n"; break; case SM_NEWMAIL_FILETYPE_OGG: case SM_NEWMAIL_FILETYPE_MP3: case SM_NEWMAIL_FILETYPE_SVG: default: $ret_embed=''; } return $ret_embed; } /** * Adds closing tags for ie object * Warning: * * This is internal function, use newmail_media_objects() instead * @param integer $type media object type * @return string closing tag of media object */ function newmail_media_object_ie_close($type) { $ret_end=''; switch ($type) { case SM_NEWMAIL_FILETYPE_SWF: case SM_NEWMAIL_FILETYPE_WAV: case SM_NEWMAIL_FILETYPE_MP3: $ret_end="\n"; break; case SM_NEWMAIL_FILETYPE_OGG: case SM_NEWMAIL_FILETYPE_SVG: default: $ret_end=''; } return $ret_end; } /** * Adds closing tags for object * Warning: * * This is internal function, use newmail_media_objects() instead * @param integer $type media object type * @return string closing tag of media object */ function newmail_media_object_close($type) { $ret_end=''; switch ($type) { case SM_NEWMAIL_FILETYPE_SWF: case SM_NEWMAIL_FILETYPE_WAV: case SM_NEWMAIL_FILETYPE_OGG: case SM_NEWMAIL_FILETYPE_MP3: case SM_NEWMAIL_FILETYPE_SVG: $ret_end="\n"; break; default: $ret_end=''; } return $ret_end; } /** * Adds closing tags for object * Warning: * * This is internal function, use newmail_media_objects() instead * @param integer $type media object type * @return string closing tag of media object */ function newmail_media_embed_close($type) { $ret_end=''; switch ($type) { case SM_NEWMAIL_FILETYPE_SWF: case SM_NEWMAIL_FILETYPE_WAV: $ret_end="\n"; break; case SM_NEWMAIL_FILETYPE_OGG: case SM_NEWMAIL_FILETYPE_MP3: case SM_NEWMAIL_FILETYPE_SVG: default: $ret_end=''; } return $ret_end; } /** * Converts media attributes to string * Warning: * * attribute values are automatically sanitized by htmlspecialchars() * * This is internal function, use newmail_media_objects() instead * @param array $args array with object attributes * @return string string with object attributes */ function newmail_media_prepare_args($args) { $ret_args=''; foreach ($args as $arg => $value) { $ret_args.= $arg . '="' . htmlspecialchars($value) . '" '; } return $ret_args; } /** * Detects used media type and creates all need tags * @param string $newmail_media * @return string html tags with media objects */ function newmail_create_media_tags($newmail_media) { global $newmail_mmedia, $newmail_userfile_type; if (preg_match("/^mmedia_+/",$newmail_media)) { $ret_media = "\n"; // remove mmedia key $newmail_mmedia_short=preg_replace("/^mmedia_/",'',$newmail_media); // check if media option is not removed if (isset($newmail_mmedia[$newmail_mmedia_short])) { $ret_media.= newmail_media_objects($newmail_mmedia_short, $newmail_mmedia[$newmail_mmedia_short]['types'], sqm_baseuri() . 'plugins/newmail/media/', $newmail_mmedia[$newmail_mmedia_short]['args']); } $ret_media.= "\n"; } elseif ($newmail_media=='(userfile)') { $ret_media = "\n"; $ret_media.= newmail_media_objects('loadfile.php', array($newmail_userfile_type), sqm_baseuri() . 'plugins/newmail/', array('width'=>0,'height'=>0), '',false); $ret_media.= "\n"; } else { $ret_media = "\n"; $ret_media.= newmail_media_objects(basename($newmail_media), array(SM_NEWMAIL_FILETYPE_WAV), sqm_baseuri() . 'plugins/newmail/sounds/', array('width'=>0,'height'=>0), '',false); $ret_media.= "\n"; } return $ret_media; } ?>