xref: /plugin/siteexport/action/sendfile.php (revision 7d101cc131696cb3a0de345d8044a69fb2ef70e9)
1*7d101cc1SGerry Weißbach<?php
2*7d101cc1SGerry Weißbach/**
3*7d101cc1SGerry Weißbach * Siteexport SendFile Plugin
4*7d101cc1SGerry Weißbach *
5*7d101cc1SGerry Weißbach * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
6*7d101cc1SGerry Weißbach * @author     i-net software <tools@inetsoftware.de>
7*7d101cc1SGerry Weißbach * @author     Gerry Weissbach <gweissbach@inetsoftware.de>
8*7d101cc1SGerry Weißbach */
9*7d101cc1SGerry Weißbach
10*7d101cc1SGerry Weißbach// must be run within Dokuwiki
11*7d101cc1SGerry Weißbachif(!defined('DOKU_INC')) die();
12*7d101cc1SGerry Weißbach
13*7d101cc1SGerry Weißbachif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
14*7d101cc1SGerry Weißbach
15*7d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'action.php');
16*7d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'siteexport/inc/debug.php');
17*7d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'siteexport/inc/functions.php');
18*7d101cc1SGerry Weißbach
19*7d101cc1SGerry Weißbachclass action_plugin_siteexport_sendfile extends DokuWiki_Action_Plugin {
20*7d101cc1SGerry Weißbach
21*7d101cc1SGerry Weißbach    function getInfo(){
22*7d101cc1SGerry Weißbach        return array_merge(confToHash(dirname(__FILE__).'/../info.txt'), array(
23*7d101cc1SGerry Weißbach				'name' => 'i-net Download (Send File Action Component)',
24*7d101cc1SGerry Weißbach        ));
25*7d101cc1SGerry Weißbach    }
26*7d101cc1SGerry Weißbach
27*7d101cc1SGerry Weißbach    function register(&$controller) {
28*7d101cc1SGerry Weißbach        // Download of a file
29*7d101cc1SGerry Weißbach
30*7d101cc1SGerry Weißbach        $controller->register_hook('MEDIA_SENDFILE', 'BEFORE', $this, 'siteexport_sendfile');
31*7d101cc1SGerry Weißbach        $controller->register_hook('FETCH_MEDIA_STATUS', 'BEFORE', $this, 'siteexport_sendfile_not_found');
32*7d101cc1SGerry Weißbach    }
33*7d101cc1SGerry Weißbach
34*7d101cc1SGerry Weißbach    /*
35*7d101cc1SGerry Weißbach     * Redirect File to real File
36*7d101cc1SGerry Weißbach     */
37*7d101cc1SGerry Weißbach    function siteexport_sendfile(&$event, $args) {
38*7d101cc1SGerry Weißbach        global $MEDIA, $conf;
39*7d101cc1SGerry Weißbach
40*7d101cc1SGerry Weißbach        if ( empty($_REQUEST['siteexport']) /* || $event->data['orig'] != $this->getConf('zipfilename') */ ) {
41*7d101cc1SGerry Weißbach            return;
42*7d101cc1SGerry Weißbach        }
43*7d101cc1SGerry Weißbach
44*7d101cc1SGerry Weißbach        $functions = new siteexport_functions();
45*7d101cc1SGerry Weißbach        $functions->settings->pattern = $_REQUEST['siteexport'];
46*7d101cc1SGerry Weißbach
47*7d101cc1SGerry Weißbach        // Try injecting another name ...
48*7d101cc1SGerry Weißbach        // header('Content-Disposition: attachment; filename="'. basename($functions->settings->zipFile) .'";');
49*7d101cc1SGerry Weißbach
50*7d101cc1SGerry Weißbach        // Try getting the cached file ...
51*7d101cc1SGerry Weißbach        $event->data['file'] = $functions->getCacheFileNameForPattern();
52*7d101cc1SGerry Weißbach
53*7d101cc1SGerry Weißbach        $functions->debug->message("fetching cached file from pattern '{$functions->settings->pattern}' with name '{$event->data['file']}'", null, 2);
54*7d101cc1SGerry Weißbach        $functions->checkIfCacheFileExistsForFileWithPattern($event->data['file'], $_REQUEST['siteexport']);
55*7d101cc1SGerry Weißbach    }
56*7d101cc1SGerry Weißbach
57*7d101cc1SGerry Weißbach    function siteexport_sendfile_not_found(&$event, $args)
58*7d101cc1SGerry Weißbach    {
59*7d101cc1SGerry Weißbach        if ( empty($_REQUEST['siteexport']) /*|| $event->data['orig'] != $this->getConf('zipfilename')*/ || $event->data['status'] != 404 ) { return true; }
60*7d101cc1SGerry Weißbach        $event->data['status'] = 200;
61*7d101cc1SGerry Weißbach        return true;
62*7d101cc1SGerry Weißbach    }
63*7d101cc1SGerry Weißbach}
64