NAVIGATION
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.
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.
<note> If the original file in ”/filearchive/” is deleted, the copy in ”/content/tmp/” will persist !!</note>
Docu: –
Forum: 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: → /config/phpwcms/conf.inc.php
For a better identification and runtime optimization you must insert <!--COPY_SWF//--> into the template.
File: template/inc_cntpart/multimedia/copy_swf.tmpl
[MULTIMEDIA] <!--COPY_SWF//--> <div class="multimedia"> {MULTIMEDIA} </div> [/MULTIMEDIA]
File: /template/inc_script/frontend_init/cp_trig_multimedia_copy_swf.php
cp_trig_multimedia_copy_swf.php
<?php // ------------------------------------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");} // ------------------------------------------------------------------------------------------- /** * ***************************************************************************** * SWF file: the files in the directory /filearchive/ are protected by an htaccess file * If you want to give up this protection, this script can be used. * Copy SWF file from folder /filearchive/ into the folder /content/tmp/ * V1.0 07.09.10 K.Heermann http://planmatrix.de * * ---- Template ------------------------------------------ * Please insert <!--COPY_SWF//--> into your multimedia * template for a better identification of this CP. * * folder: /template/inc_cntpart/multimedia/ * * [MULTIMEDIA] <!--COPY_SWF//--> <div class="multimedia"> {MULTIMEDIA} </div> [/MULTIMEDIA] * * ***************************************************************************** */ function CP_MULTIMEDIA_COPY_SWF($text, & $data) { // CP type multimedia = 9 if( $data['acontent_type'] == 9 AND strpos($text, '<!--COPY_SWF//-->') ) { // 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('<!--COPY_SWF//-->','Error while copying the file!!<br>',$text); else str_replace('<!--COPY_SWF//-->','',$text); } return $text; } // ---- END function register_cp_trigger('CP_MULTIMEDIA_COPY_SWF'); ?>