xref: /plugin/siteexport/action/sendfile.php (revision e10453fddd1f94f701b85bb5b8b70c1a736f0365)
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();
396792d0cfSGerry Weißbach        $functions->debug->message("Starting to send a file from siteexporter", null, 2);
40f3359d31SGerry Weißbach        $filewriter = new siteexport_zipfilewriter($functions);
416792d0cfSGerry 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);
506792d0cfSGerry Weißbach        $functions->debug->message("Event Data Before:", $event->data, 3);
51f3359d31SGerry Weißbach
527d101cc1SGerry Weißbach        $functions->checkIfCacheFileExistsForFileWithPattern($event->data['file'], $_REQUEST['siteexport']);
536792d0cfSGerry Weißbach
546792d0cfSGerry Weißbach        $filewriter->getOnlyFileInZip($event->data);
556792d0cfSGerry 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    {
60*e10453fdSGerry Weißbach        if ( empty($_REQUEST['siteexport']) ||
61*e10453fdSGerry Weißbach        /**
62*e10453fdSGerry Weißbach        $event->data['media'] != $this->getConf('zipfilename')
63*e10453fdSGerry Weißbach        /*/
64*e10453fdSGerry Weißbach        $event->data['status'] >= 400
65*e10453fdSGerry Weißbach        //*/
66*e10453fdSGerry Weißbach        ) { return true; }
677d101cc1SGerry Weißbach        $event->data['status'] = 200;
687d101cc1SGerry Weißbach        return true;
697d101cc1SGerry Weißbach    }
707d101cc1SGerry Weißbach}
71