17d101cc1SGerry Weißbach<?php 27d101cc1SGerry Weißbach/** 37d101cc1SGerry Weißbach * Siteexport SendFile Plugin 47d101cc1SGerry Weißbach * 57d101cc1SGerry Weißbach * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 67d101cc1SGerry Weißbach * @author i-net software <tools@inetsoftware.de> 77d101cc1SGerry Weißbach * @author Gerry Weissbach <gweissbach@inetsoftware.de> 87d101cc1SGerry Weißbach */ 97d101cc1SGerry Weißbach 107d101cc1SGerry Weißbach// must be run within Dokuwiki 117d101cc1SGerry Weißbachif (!defined('DOKU_INC')) die(); 127d101cc1SGerry Weißbach 137d101cc1SGerry Weißbachif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/'); 147d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN . 'siteexport/inc/debug.php'); 157d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN . 'siteexport/inc/functions.php'); 167d101cc1SGerry Weißbach 177d101cc1SGerry Weißbachclass action_plugin_siteexport_sendfile extends DokuWiki_Action_Plugin { 187d101cc1SGerry Weißbach 193f2e6413SGerry Weißbach public function register(Doku_Event_Handler $controller) { 207d101cc1SGerry Weißbach // Download of a file 217d101cc1SGerry Weißbach 227d101cc1SGerry Weißbach $controller->register_hook('MEDIA_SENDFILE', 'BEFORE', $this, 'siteexport_sendfile'); 237d101cc1SGerry Weißbach $controller->register_hook('FETCH_MEDIA_STATUS', 'BEFORE', $this, 'siteexport_sendfile_not_found'); 247d101cc1SGerry Weißbach } 257d101cc1SGerry Weißbach 267d101cc1SGerry Weißbach /* 277d101cc1SGerry Weißbach * Redirect File to real File 287d101cc1SGerry Weißbach */ 29*a8c17ab5Si-net /// software public function siteexport_sendfile(Doku_Event &$event, $args) { 30d0b1cc0dSGerry Weißbach global $conf; 317d101cc1SGerry Weißbach 327d101cc1SGerry Weißbach if (empty($_REQUEST['siteexport']) /* || $event->data['orig'] != $this->getConf('zipfilename') */) { 337d101cc1SGerry Weißbach return; 347d101cc1SGerry Weißbach } 357d101cc1SGerry Weißbach 367d101cc1SGerry Weißbach $functions = new siteexport_functions(); 376792d0cfSGerry Weißbach $functions->debug->message("Starting to send a file from siteexporter", null, 2); 38f3359d31SGerry Weißbach $filewriter = new siteexport_zipfilewriter($functions); 396792d0cfSGerry Weißbach $functions->settings->pattern = $_REQUEST['siteexport']; 407d101cc1SGerry Weißbach 41d0b1cc0dSGerry Weißbach // Try injecting another name ... can't do, because sendFile sets this right after me and right before sending the actual data. 427d101cc1SGerry Weißbach // header('Content-Disposition: attachment; filename="'. basename($functions->settings->zipFile) .'";'); 437d101cc1SGerry Weißbach 447d101cc1SGerry Weißbach // Try getting the cached file ... 457d101cc1SGerry Weißbach $event->data['file'] = $functions->getCacheFileNameForPattern(); 467d101cc1SGerry Weißbach 477d101cc1SGerry Weißbach $functions->debug->message("fetching cached file from pattern '{$functions->settings->pattern}' with name '{$event->data['file']}'", null, 2); 486792d0cfSGerry Weißbach $functions->debug->message("Event Data Before:", $event->data, 3); 49f3359d31SGerry Weißbach 507d101cc1SGerry Weißbach $functions->checkIfCacheFileExistsForFileWithPattern($event->data['file'], $_REQUEST['siteexport']); 516792d0cfSGerry Weißbach 526792d0cfSGerry Weißbach $filewriter->getOnlyFileInZip($event->data); 530ed0d3c4SGerry Weißbach 540ed0d3c4SGerry Weißbach header('Set-Cookie: fileDownload=true; path=' . DOKU_BASE); 550ed0d3c4SGerry Weißbach header('Cache-Control: max-age=60, must-revalidate'); 560ed0d3c4SGerry Weißbach 576792d0cfSGerry Weißbach $functions->debug->message("Event Data After:", $event->data, 3); 587d101cc1SGerry Weißbach } 597d101cc1SGerry Weißbach 60*a8c17ab5Si-net /// software public function siteexport_sendfile_not_found(Doku_Event &$event, $args) 617d101cc1SGerry Weißbach { 62e10453fdSGerry Weißbach if (empty($_REQUEST['siteexport']) || 63e10453fdSGerry Weißbach /** 64e10453fdSGerry Weißbach $event->data['media'] != $this->getConf('zipfilename') 65e10453fdSGerry Weißbach /*/ 660ed0d3c4SGerry Weißbach $event->data['status'] >= 500 67e10453fdSGerry Weißbach //*/ 68e10453fdSGerry Weißbach ) { return true; } 697d101cc1SGerry Weißbach $event->data['status'] = 200; 707d101cc1SGerry Weißbach return true; 717d101cc1SGerry Weißbach } 727d101cc1SGerry Weißbach} 73