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 getInfo(){ 227d101cc1SGerry Weißbach return array_merge(confToHash(dirname(__FILE__).'/../info.txt'), array( 237d101cc1SGerry Weißbach 'name' => 'i-net Download (Send File Action Component)', 247d101cc1SGerry Weißbach )); 257d101cc1SGerry Weißbach } 267d101cc1SGerry Weißbach 277d101cc1SGerry Weißbach function register(&$controller) { 287d101cc1SGerry Weißbach // Download of a file 297d101cc1SGerry Weißbach 307d101cc1SGerry Weißbach $controller->register_hook('MEDIA_SENDFILE', 'BEFORE', $this, 'siteexport_sendfile'); 317d101cc1SGerry Weißbach $controller->register_hook('FETCH_MEDIA_STATUS', 'BEFORE', $this, 'siteexport_sendfile_not_found'); 327d101cc1SGerry Weißbach } 337d101cc1SGerry Weißbach 347d101cc1SGerry Weißbach /* 357d101cc1SGerry Weißbach * Redirect File to real File 367d101cc1SGerry Weißbach */ 377d101cc1SGerry Weißbach function siteexport_sendfile(&$event, $args) { 38d0b1cc0dSGerry Weißbach global $conf; 397d101cc1SGerry Weißbach 407d101cc1SGerry Weißbach if ( empty($_REQUEST['siteexport']) /* || $event->data['orig'] != $this->getConf('zipfilename') */ ) { 417d101cc1SGerry Weißbach return; 427d101cc1SGerry Weißbach } 437d101cc1SGerry Weißbach 447d101cc1SGerry Weißbach $functions = new siteexport_functions(); 457d101cc1SGerry Weißbach $functions->settings->pattern = $_REQUEST['siteexport']; 46*f3359d31SGerry Weißbach $filewriter = new siteexport_zipfilewriter($functions); 477d101cc1SGerry Weißbach 48d0b1cc0dSGerry Weißbach // Try injecting another name ... can't do, because sendFile sets this right after me and right before sending the actual data. 497d101cc1SGerry Weißbach // header('Content-Disposition: attachment; filename="'. basename($functions->settings->zipFile) .'";'); 507d101cc1SGerry Weißbach 517d101cc1SGerry Weißbach // Try getting the cached file ... 527d101cc1SGerry Weißbach $event->data['file'] = $functions->getCacheFileNameForPattern(); 537d101cc1SGerry Weißbach 547d101cc1SGerry Weißbach $functions->debug->message("fetching cached file from pattern '{$functions->settings->pattern}' with name '{$event->data['file']}'", null, 2); 55*f3359d31SGerry Weißbach 567d101cc1SGerry Weißbach $functions->checkIfCacheFileExistsForFileWithPattern($event->data['file'], $_REQUEST['siteexport']); 57*f3359d31SGerry Weißbach $filewriter->getOnlyFileInZip($event->data['file'], $event->data['orig']); 587d101cc1SGerry Weißbach } 597d101cc1SGerry Weißbach 607d101cc1SGerry Weißbach function siteexport_sendfile_not_found(&$event, $args) 617d101cc1SGerry Weißbach { 627d101cc1SGerry Weißbach if ( empty($_REQUEST['siteexport']) /*|| $event->data['orig'] != $this->getConf('zipfilename')*/ || $event->data['status'] != 404 ) { return true; } 637d101cc1SGerry Weißbach $event->data['status'] = 200; 647d101cc1SGerry Weißbach return true; 657d101cc1SGerry Weißbach } 667d101cc1SGerry Weißbach} 67