{{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'); ?>