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ßbach 157d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'action.php'); 167d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'siteexport/inc/debug.php'); 177d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'siteexport/inc/functions.php'); 187d101cc1SGerry Weißbach 197d101cc1SGerry Weißbachclass action_plugin_siteexport_sendfile extends DokuWiki_Action_Plugin { 207d101cc1SGerry Weißbach 217d101cc1SGerry Weißbach function register(&$controller) { 227d101cc1SGerry Weißbach // Download of a file 237d101cc1SGerry Weißbach 247d101cc1SGerry Weißbach $controller->register_hook('MEDIA_SENDFILE', 'BEFORE', $this, 'siteexport_sendfile'); 257d101cc1SGerry Weißbach $controller->register_hook('FETCH_MEDIA_STATUS', 'BEFORE', $this, 'siteexport_sendfile_not_found'); 267d101cc1SGerry Weißbach } 277d101cc1SGerry Weißbach 287d101cc1SGerry Weißbach /* 297d101cc1SGerry Weißbach * Redirect File to real File 307d101cc1SGerry Weißbach */ 317d101cc1SGerry Weißbach function siteexport_sendfile(&$event, $args) { 32d0b1cc0dSGerry Weißbach global $conf; 337d101cc1SGerry Weißbach 347d101cc1SGerry Weißbach if ( empty($_REQUEST['siteexport']) /* || $event->data['orig'] != $this->getConf('zipfilename') */ ) { 357d101cc1SGerry Weißbach return; 367d101cc1SGerry Weißbach } 377d101cc1SGerry Weißbach 387d101cc1SGerry Weißbach $functions = new siteexport_functions(); 39*6792d0cfSGerry Weißbach $functions->debug->message("Starting to send a file from siteexporter", null, 2); 40f3359d31SGerry Weißbach $filewriter = new siteexport_zipfilewriter($functions); 41*6792d0cfSGerry Weißbach $functions->settings->pattern = $_REQUEST['siteexport']; 427d101cc1SGerry Weißbach 43d0b1cc0dSGerry Weißbach // Try injecting another name ... can't do, because sendFile sets this right after me and right before sending the actual data. 447d101cc1SGerry Weißbach // header('Content-Disposition: attachment; filename="'. basename($functions->settings->zipFile) .'";'); 457d101cc1SGerry Weißbach 467d101cc1SGerry Weißbach // Try getting the cached file ... 477d101cc1SGerry Weißbach $event->data['file'] = $functions->getCacheFileNameForPattern(); 487d101cc1SGerry Weißbach 497d101cc1SGerry Weißbach $functions->debug->message("fetching cached file from pattern '{$functions->settings->pattern}' with name '{$event->data['file']}'", null, 2); 50*6792d0cfSGerry Weißbach $functions->debug->message("Event Data Before:", $event->data, 3); 51f3359d31SGerry Weißbach 527d101cc1SGerry Weißbach $functions->checkIfCacheFileExistsForFileWithPattern($event->data['file'], $_REQUEST['siteexport']); 53*6792d0cfSGerry Weißbach 54*6792d0cfSGerry Weißbach $filewriter->getOnlyFileInZip($event->data); 55*6792d0cfSGerry Weißbach $functions->debug->message("Event Data After:", $event->data, 3); 567d101cc1SGerry Weißbach } 577d101cc1SGerry Weißbach 587d101cc1SGerry Weißbach function siteexport_sendfile_not_found(&$event, $args) 597d101cc1SGerry Weißbach { 607d101cc1SGerry Weißbach if ( empty($_REQUEST['siteexport']) /*|| $event->data['orig'] != $this->getConf('zipfilename')*/ || $event->data['status'] != 404 ) { return true; } 617d101cc1SGerry Weißbach $event->data['status'] = 200; 627d101cc1SGerry Weißbach return true; 637d101cc1SGerry Weißbach } 647d101cc1SGerry Weißbach} 65