xref: /plugin/siteexport/action/sendfile.php (revision d0b1cc0d8fe3fd731683e13b5b0c116b205d16e1)
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) {
38*d0b1cc0dSGerry 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'];
467d101cc1SGerry Weißbach
47*d0b1cc0dSGerry Weißbach        // Try injecting another name ... can't do, because sendFile sets this right after me and right before sending the actual data.
487d101cc1SGerry Weißbach        // header('Content-Disposition: attachment; filename="'. basename($functions->settings->zipFile) .'";');
497d101cc1SGerry Weißbach
507d101cc1SGerry Weißbach        // Try getting the cached file ...
517d101cc1SGerry Weißbach        $event->data['file'] = $functions->getCacheFileNameForPattern();
527d101cc1SGerry Weißbach
537d101cc1SGerry Weißbach        $functions->debug->message("fetching cached file from pattern '{$functions->settings->pattern}' with name '{$event->data['file']}'", null, 2);
547d101cc1SGerry Weißbach        $functions->checkIfCacheFileExistsForFileWithPattern($event->data['file'], $_REQUEST['siteexport']);
557d101cc1SGerry Weißbach    }
567d101cc1SGerry Weißbach
577d101cc1SGerry Weißbach    function siteexport_sendfile_not_found(&$event, $args)
587d101cc1SGerry Weißbach    {
597d101cc1SGerry Weißbach        if ( empty($_REQUEST['siteexport']) /*|| $event->data['orig'] != $this->getConf('zipfilename')*/ || $event->data['status'] != 404 ) { return true; }
607d101cc1SGerry Weißbach        $event->data['status'] = 200;
617d101cc1SGerry Weißbach        return true;
627d101cc1SGerry Weißbach    }
637d101cc1SGerry Weißbach}
64