64 lines
1.4 KiB
PHP
64 lines
1.4 KiB
PHP
<?php
|
|
/**
|
|
* Download service script.
|
|
*
|
|
* Copyright 2002-2017 Horde LLC (http://www.horde.org/)
|
|
*
|
|
* See the enclosed file COPYING for license information (LGPL-2). If you
|
|
* did not receive this file, see http://www.horde.org/licenses/lgpl.
|
|
*
|
|
* @author Michael Slusarz <slusarz@horde.org>
|
|
* @category Horde
|
|
* @license http://www.horde.org/licenses/lgpl LGPL-2
|
|
* @package Horde
|
|
*/
|
|
|
|
require_once __DIR__ . '/../../lib/Application.php';
|
|
Horde_Registry::appInit('horde', array(
|
|
'authentication' => 'none',
|
|
'session_control' => 'readonly'
|
|
));
|
|
|
|
$vars = $injector->getInstance('Horde_Variables');
|
|
|
|
if (!isset($vars->app)) {
|
|
exit;
|
|
}
|
|
|
|
$vars->filename = substr($vars->fn, 1);
|
|
unset($vars->fn);
|
|
|
|
$res = $registry->callAppMethod($vars->app, 'download', array(
|
|
'args' => array($vars)
|
|
));
|
|
|
|
if (!isset($res['data'])) {
|
|
exit;
|
|
}
|
|
|
|
if (!array_key_exists('size', $res)) {
|
|
if (is_resource($res['data'])) {
|
|
fseek($res['data'], 0, SEEK_END);
|
|
$res['size'] = ftell($res['data']);
|
|
} else {
|
|
$res['size'] = strlen($res['data']);
|
|
}
|
|
}
|
|
|
|
$browser->downloadHeaders(
|
|
isset($res['name']) ? $res['name'] : $vars->filename,
|
|
isset($res['type']) ? $res['type'] : null,
|
|
false,
|
|
$res['size']
|
|
);
|
|
|
|
if (is_resource($res['data'])) {
|
|
rewind($res['data']);
|
|
while (!feof($res['data'])) {
|
|
echo fread($res['data'], 8192);
|
|
}
|
|
fclose($res['data']);
|
|
} else {
|
|
echo $res['data'];
|
|
}
|