*/ function send_theme ($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=INDEXMENU_IMG_ABSDIR."/repository"; $zipfile=$repodir."/$file.zip"; $localtheme=INDEXMENU_IMG_ABSDIR."/$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); print $ct; } @fclose($fp); return true; } }