1*7d101cc1SGerry Weißbach<?php 2*7d101cc1SGerry Weißbach/** 3*7d101cc1SGerry Weißbach * Siteexport SendFile Plugin 4*7d101cc1SGerry Weißbach * 5*7d101cc1SGerry Weißbach * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6*7d101cc1SGerry Weißbach * @author i-net software <tools@inetsoftware.de> 7*7d101cc1SGerry Weißbach * @author Gerry Weissbach <gweissbach@inetsoftware.de> 8*7d101cc1SGerry Weißbach */ 9*7d101cc1SGerry Weißbach 10*7d101cc1SGerry Weißbach// must be run within Dokuwiki 11*7d101cc1SGerry Weißbachif(!defined('DOKU_INC')) die(); 12*7d101cc1SGerry Weißbach 13*7d101cc1SGerry Weißbachif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 14*7d101cc1SGerry Weißbach 15*7d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'action.php'); 16*7d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'siteexport/inc/debug.php'); 17*7d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'siteexport/inc/functions.php'); 18*7d101cc1SGerry Weißbach 19*7d101cc1SGerry Weißbachclass action_plugin_siteexport_sendfile extends DokuWiki_Action_Plugin { 20*7d101cc1SGerry Weißbach 21*7d101cc1SGerry Weißbach function getInfo(){ 22*7d101cc1SGerry Weißbach return array_merge(confToHash(dirname(__FILE__).'/../info.txt'), array( 23*7d101cc1SGerry Weißbach 'name' => 'i-net Download (Send File Action Component)', 24*7d101cc1SGerry Weißbach )); 25*7d101cc1SGerry Weißbach } 26*7d101cc1SGerry Weißbach 27*7d101cc1SGerry Weißbach function register(&$controller) { 28*7d101cc1SGerry Weißbach // Download of a file 29*7d101cc1SGerry Weißbach 30*7d101cc1SGerry Weißbach $controller->register_hook('MEDIA_SENDFILE', 'BEFORE', $this, 'siteexport_sendfile'); 31*7d101cc1SGerry Weißbach $controller->register_hook('FETCH_MEDIA_STATUS', 'BEFORE', $this, 'siteexport_sendfile_not_found'); 32*7d101cc1SGerry Weißbach } 33*7d101cc1SGerry Weißbach 34*7d101cc1SGerry Weißbach /* 35*7d101cc1SGerry Weißbach * Redirect File to real File 36*7d101cc1SGerry Weißbach */ 37*7d101cc1SGerry Weißbach function siteexport_sendfile(&$event, $args) { 38*7d101cc1SGerry Weißbach global $MEDIA, $conf; 39*7d101cc1SGerry Weißbach 40*7d101cc1SGerry Weißbach if ( empty($_REQUEST['siteexport']) /* || $event->data['orig'] != $this->getConf('zipfilename') */ ) { 41*7d101cc1SGerry Weißbach return; 42*7d101cc1SGerry Weißbach } 43*7d101cc1SGerry Weißbach 44*7d101cc1SGerry Weißbach $functions = new siteexport_functions(); 45*7d101cc1SGerry Weißbach $functions->settings->pattern = $_REQUEST['siteexport']; 46*7d101cc1SGerry Weißbach 47*7d101cc1SGerry Weißbach // Try injecting another name ... 48*7d101cc1SGerry Weißbach // header('Content-Disposition: attachment; filename="'. basename($functions->settings->zipFile) .'";'); 49*7d101cc1SGerry Weißbach 50*7d101cc1SGerry Weißbach // Try getting the cached file ... 51*7d101cc1SGerry Weißbach $event->data['file'] = $functions->getCacheFileNameForPattern(); 52*7d101cc1SGerry Weißbach 53*7d101cc1SGerry Weißbach $functions->debug->message("fetching cached file from pattern '{$functions->settings->pattern}' with name '{$event->data['file']}'", null, 2); 54*7d101cc1SGerry Weißbach $functions->checkIfCacheFileExistsForFileWithPattern($event->data['file'], $_REQUEST['siteexport']); 55*7d101cc1SGerry Weißbach } 56*7d101cc1SGerry Weißbach 57*7d101cc1SGerry Weißbach function siteexport_sendfile_not_found(&$event, $args) 58*7d101cc1SGerry Weißbach { 59*7d101cc1SGerry Weißbach if ( empty($_REQUEST['siteexport']) /*|| $event->data['orig'] != $this->getConf('zipfilename')*/ || $event->data['status'] != 404 ) { return true; } 60*7d101cc1SGerry Weißbach $event->data['status'] = 200; 61*7d101cc1SGerry Weißbach return true; 62*7d101cc1SGerry Weißbach } 63*7d101cc1SGerry Weißbach} 64