56 lines
1.9 KiB
PHP
56 lines
1.9 KiB
PHP
<?php
|
|
// phpcs:ignorefile
|
|
|
|
/* @deprecated 2023-11 used in ajax.php, which is not used anymore */
|
|
class repo_indexmenu_plugin
|
|
{
|
|
/**
|
|
* Send a zipped theme
|
|
*
|
|
* @author Samuele Tognini <samuele@samuele.netsons.org>
|
|
*/
|
|
|
|
public function sendTheme($file)
|
|
{
|
|
require_once(DOKU_PLUGIN . 'indexmenu/syntax/indexmenu.php');
|
|
$idxm = new syntax_plugin_indexmenu_indexmenu();
|
|
//clean the file name
|
|
$file = cleanID($file);
|
|
//check config
|
|
if (!$idxm->getConf('be_repo') || empty($file)) return false;
|
|
$repodir = DOKU_PLUGIN . "indexmenu/images/repository";
|
|
$zipfile = $repodir . "/$file.zip";
|
|
$localtheme = DOKU_PLUGIN . "indexmenu/images/$file/";
|
|
//theme does not exists
|
|
if (!file_exists($localtheme)) return false;
|
|
if (!io_mkdir_p($repodir)) return false;
|
|
$lm = @filemtime($zipfile);
|
|
//no cached zip or older than 1 day
|
|
if ($lm < time() - (60 * 60 * 24)) {
|
|
//create the zip
|
|
require_once(DOKU_PLUGIN . "indexmenu/inc/pclzip.lib.php");
|
|
@unlink($zipfile);
|
|
$zip = new PclZip($zipfile);
|
|
$status = $zip->add($localtheme, PCLZIP_OPT_REMOVE_ALL_PATH);
|
|
//error
|
|
if ($status == 0) return false;
|
|
}
|
|
$len = (int) filesize($zipfile);
|
|
//don't send large zips
|
|
if ($len > 2 * 1024 * 1024) return false;
|
|
//headers
|
|
header('Cache-Control: must-revalidate, no-transform, post-check=0, pre-check=0');
|
|
header('Pragma: public');
|
|
header('Content-Type: application/zip');
|
|
header('Content-Disposition: attachment; filename="' . basename($zipfile) . '";');
|
|
header("Content-Transfer-Encoding: binary");
|
|
//send zip
|
|
$fp = @fopen($zipfile, 'rb');
|
|
if ($fp) {
|
|
$ct = @fread($fp, $len);
|
|
echo $ct;
|
|
}
|
|
@fclose($fp);
|
|
return true;
|
|
}
|
|
}
|