{{indexmenu_n>100}}
====== Multimedia: Copy SWF file into a non-protected directory ======
When using the multimedia CP to display a Flash swf file and using the "internal file" option (a swf file uploaded via the backend), the file doesn't display/load in the front end.
The reason for this behavior is the protection of the directory "/filearchive/" by an htaccess file.
**There are two solutions for this problem:**
**1st** Disable the htaccess file (no good idea) \\
**2nd** Script: Copy the requested file into an unprotected directory and provide it from this place \\
**I want to talk about the second method.**
\\
===== Description: =====
**Script:**
During the CP call the script determines the relevant file name from the HTML source code and looks for the existance of the requested file within the non-protected directory. If this file does not exist there, that file will be copied from "/filearchive/" to "/content/tmp/" and the HTML source code for the output will be generated.
**If the original file in "/filearchive/" is deleted, the copy in "/content/tmp/" will persist !!**
\\
----
Docu: -- \\
Forum: [[http://forum.phpwcms.org/viewtopic.php?p=126267|Flash swf file doesn't display in multimedia content part]] \\
**Author:** K.Heermann (flip-flop) [[http://planmatrix.de]] \\
**CMS Version:** >= 1.4x \\
**Version:** V1.0 //(07.09.2010)// \\
**Condition:** -> [[http://www.phpwcms-docu.de/conf_inc_php_en.phtml|/config/phpwcms/conf.inc.php]] \\
* $phpwcms['allow_ext_init'] = 1;
----
\\
===== Example template: =====
For a better identification and runtime optimization you must insert ##%%%%## into the template.
File: **template/inc_cntpart/multimedia/copy_swf.tmpl**
[MULTIMEDIA]
{MULTIMEDIA}
[/MULTIMEDIA]
\\
===== PHP: =====
File: **/template/inc_script/frontend_init/cp_trig_multimedia_copy_swf.php**
into your multimedia
* template for a better identification of this CP.
*
* folder: /template/inc_cntpart/multimedia/
*
*
[MULTIMEDIA]
{MULTIMEDIA}
[/MULTIMEDIA]
*
* *****************************************************************************
*/
function CP_MULTIMEDIA_COPY_SWF($text, & $data) {
// CP type multimedia = 9
if( $data['acontent_type'] == 9 AND strpos($text, '') ) {
// Is there any swf file in source?
if (preg_match('@value="'.PHPWCMS_FILES.'(.*?)\.swf"@i', $text, $filename)) {
// Yes it is and we have catched the filename
if ($filename[1] ) {
$source = PHPWCMS_FILES.$filename[1].'.swf'; // Source dir and filename
$target = 'content/tmp/'.$filename[1].'.swf'; // Destination dir and filename
$error = false;
// file already exists in destination dir?
if (!is_file ($target)) {
// No, please copy into
if (!copy($source, $target)) {
$error = true;
}
}
// Change folder in html source
$text = preg_replace('@="'.$source.'"@i','="'.$target.'"',$text);
}
}
if ($error)
str_replace('','Error while copying the file!!
',$text);
else
str_replace('','',$text);
}
return $text;
} // ---- END function
register_cp_trigger('CP_MULTIMEDIA_COPY_SWF');
?>