1f82bbc90SS.Chekanov<?php 2f82bbc90SS.Chekanov/** 3*1cc51851SS.Chekanov * ZWIdoku Plugin: Export DokuWiki acrticle to the ZWI format. 4f82bbc90SS.Chekanov * 5f82bbc90SS.Chekanov * @license LGPL 2 (http://www.gnu.org/licenses/gpl.html) 6*1cc51851SS.Chekanov * @author S.Chekanov (KSF) 7f82bbc90SS.Chekanov * 8f82bbc90SS.Chekanov */ 9*1cc51851SS.Chekanov########################## start configuration ############################### 10f82bbc90SS.Chekanov 11*1cc51851SS.Chekanov# add name of your encyclopedia (or sandbox) 12*1cc51851SS.Chekanov$wgMzwiName="sandbox"; 13*1cc51851SS.Chekanov# 14f82bbc90SS.Chekanov# action tab to make "Export to ZWI" 15f82bbc90SS.Chekanov$wgMzwiTab=true; 16f82bbc90SS.Chekanov# Submission webpage to Encyclosphere 17f82bbc90SS.Chekanov# Set to 0 to trigger download and nothing more 18f82bbc90SS.Chekanov# Set to 1 to create ZWI in extension/ZWIMaker/tmp and do not do anything 19f82bbc90SS.Chekanov# Set to 2 to create ZWI in extension/ZWIMaker/tmp and submit to the Encyclosphre 20f82bbc90SS.Chekanov$wgMzwiSubmit=1; 21f82bbc90SS.Chekanov# 22f82bbc90SS.Chekanov# if false, then anybody after login can send ZWI file to Encyclosphere 23f82bbc90SS.Chekanov# if true, then only authors or contributors can send the article to Encyclosphere 24f82bbc90SS.Chekanov$wgMzwiAuthorApprove=false; 25f82bbc90SS.Chekanov# 26f82bbc90SS.Chekanov# Password for the submission 27*1cc51851SS.Chekanov$wgMzwiPassword='0123456789'; 28f82bbc90SS.Chekanov# 29f82bbc90SS.Chekanov# Encyclosphere submission URL if select 1 30f82bbc90SS.Chekanov$wgMzwiSubmitUrl="https://encycloreader.org/upload/"; 31*1cc51851SS.Chekanov# 32f82bbc90SS.Chekanov# what about the license? 33f82bbc90SS.Chekanov$wgMzwiLicense='CC BY-SA 3.0'; 34*1cc51851SS.Chekanov# 35*1cc51851SS.Chekanov# Current URL of your wiki 36*1cc51851SS.Chekanov$CURRENT_URL="https://enhub.org/dokuwiki/"; 37*1cc51851SS.Chekanov# 38*1cc51851SS.Chekanov############################ end configuration ############################# 39f82bbc90SS.Chekanov 40f82bbc90SS.Chekanov 41*1cc51851SS.Chekanovif(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../../').'/'); 42*1cc51851SS.Chekanovif(!defined('DOKU_LIB')) define('DOKU_LIB',realpath(dirname(__FILE__).'/../../').'/'); 43*1cc51851SS.Chekanovif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_LIB.'plugins/'); 44*1cc51851SS.Chekanov//define('DOKU_MAIN',realpath(dirname(__FILE__).'/../../../').'/'); 45*1cc51851SS.Chekanov 46*1cc51851SS.Chekanov// must be run within Dokuwiki 47*1cc51851SS.Chekanovif(!defined('DOKU_INC')) die("Cannot find installed DokuWiki"); 48*1cc51851SS.Chekanov 49f82bbc90SS.Chekanovrequire_once(DOKU_INC.'/inc/init.php'); 50f82bbc90SS.Chekanovrequire_once(DOKU_INC.'/inc/template.php'); 51f82bbc90SS.Chekanov 52f82bbc90SS.Chekanov 53f82bbc90SS.Chekanov$actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 54f82bbc90SS.Chekanov$newlink = str_replace("lib/plugins/zwidoku/getEncyc.php?id=", "doku.php?id=", "$actual_link"); 55f82bbc90SS.Chekanov 56f82bbc90SS.Chekanov$tmp=explode("getEncyc.php", $actual_link); 57f82bbc90SS.Chekanov$ext_path = trim( $tmp[0] ); 58f82bbc90SS.Chekanov 59f82bbc90SS.Chekanov 60f82bbc90SS.Chekanovrequire("Html2Text.php"); 61f82bbc90SS.Chekanovrequire("ShortDescription.php"); 62f82bbc90SS.Chekanov 63f82bbc90SS.Chekanov 64f82bbc90SS.Chekanov function texifyReference($reference) { 65f82bbc90SS.Chekanov $patterns[ 0] = '/[áâ�| åä]/ui'; 66f82bbc90SS.Chekanov $patterns[ 1] = '/[ðéêèë]/ui'; 67f82bbc90SS.Chekanov $patterns[ 2] = '/[íîìï]/ui'; 68f82bbc90SS.Chekanov $patterns[ 3] = '/[óôòøõö]/ui'; 69f82bbc90SS.Chekanov $patterns[ 4] = '/[úûùü]/ui'; 70f82bbc90SS.Chekanov $patterns[ 5] = '/æ/ui'; 71f82bbc90SS.Chekanov $patterns[ 6] = '/ç/ui'; 72f82bbc90SS.Chekanov $patterns[ 7] = '/�~_/ui'; 73f82bbc90SS.Chekanov $patterns[ 8] = '/\\s/'; 74f82bbc90SS.Chekanov $patterns[ 9] = '/#/'; 75f82bbc90SS.Chekanov $patterns[10] = '/[^A-Za-z0-9\\-:]/'; 76f82bbc90SS.Chekanov $replacements[ 0] = 'a'; 77f82bbc90SS.Chekanov $replacements[ 1] = 'e'; 78f82bbc90SS.Chekanov $replacements[ 2] = 'i'; 79f82bbc90SS.Chekanov $replacements[ 3] = 'o'; 80f82bbc90SS.Chekanov $replacements[ 4] = 'u'; 81f82bbc90SS.Chekanov $replacements[ 5] = 'ae'; 82f82bbc90SS.Chekanov $replacements[ 6] = 'c'; 83f82bbc90SS.Chekanov $replacements[ 7] = 'ss'; 84f82bbc90SS.Chekanov $replacements[ 8] = '-'; 85f82bbc90SS.Chekanov $replacements[ 9] = ':'; 86f82bbc90SS.Chekanov $replacements[10] = '_'; 87f82bbc90SS.Chekanov 88f82bbc90SS.Chekanov return preg_replace($patterns, $replacements, $reference); 89f82bbc90SS.Chekanov } 90f82bbc90SS.Chekanov 91f82bbc90SS.Chekanov 92f82bbc90SS.Chekanov 93f82bbc90SS.Chekanov$ID = cleanID(getID()); 94f82bbc90SS.Chekanov//die("ID=".$ID); 95f82bbc90SS.Chekanov$onlyCode = $INPUT->str('onlyCode'); 96f82bbc90SS.Chekanov$insideTag = $INPUT->str('insideTag'); 97f82bbc90SS.Chekanov$title=tpl_pagetitle(null,true); 98f82bbc90SS.Chekanov$titletext=tpl_pagetitle(null,true); 99f82bbc90SS.Chekanov 100f82bbc90SS.Chekanov 101f82bbc90SS.Chekanov if (empty($conf['useacl']) || auth_quickaclcheck($ID) >= AUTH_READ) { 102f82bbc90SS.Chekanov $file = rawWiki($ID); 103f82bbc90SS.Chekanov $articleWiki = $file; 104f82bbc90SS.Chekanov 105f82bbc90SS.Chekanov $fileLastMod = wikiFN($ID); 106f82bbc90SS.Chekanov $lastMod = @filemtime($fileLastMod); // from page 107f82bbc90SS.Chekanov $NS=getNS($ID); 108f82bbc90SS.Chekanov 109f82bbc90SS.Chekanov // get revisions 110f82bbc90SS.Chekanov $filepath = str_replace(":", "/", $ID); 111f82bbc90SS.Chekanov // list all revisions 112f82bbc90SS.Chekanov $path=DOKU_INC."data/attic/". $filepath."*"; 113f82bbc90SS.Chekanov $files = glob($path); 114f82bbc90SS.Chekanov 115f82bbc90SS.Chekanov //print_r($files); 116f82bbc90SS.Chekanov 117f82bbc90SS.Chekanov $changes="data/meta/".$filepath .".changes"; 118f82bbc90SS.Chekanov $indexed="data/meta/".$filepath .".indexed"; 119f82bbc90SS.Chekanov $meta="data/meta/".$filepath .".meta"; 120f82bbc90SS.Chekanov 121f82bbc90SS.Chekanov $dir_changes=DOKU_INC."data/meta/".$filepath .".changes"; 122f82bbc90SS.Chekanov $dir_indexed=DOKU_INC."data/meta/".$filepath .".indexed"; 123f82bbc90SS.Chekanov $dir_meta=DOKU_INC."data/meta/".$filepath .".meta"; 124f82bbc90SS.Chekanov 125f82bbc90SS.Chekanov //echo $dir_changes; 126f82bbc90SS.Chekanov 127f82bbc90SS.Chekanov //if ($onlyCode) 128f82bbc90SS.Chekanov // $file = preg_replace('/[\s\S]*<code>/m', '', preg_replace('/<\/code>[\s\S]*/m', '', $file)); 129f82bbc90SS.Chekanov //if ($insideTag) 130f82bbc90SS.Chekanov // $file = preg_replace('/[\s\S]*<' . $insideTag . '[^>]*>/m', '', preg_replace('/<\/' . $insideTag . '>[\s\S]*/m', '', $file)); 131f82bbc90SS.Chekanov 132f82bbc90SS.Chekanov //print $file; 133f82bbc90SS.Chekanov // file_put_contents("tmp/article.txt", $file); 134f82bbc90SS.Chekanov 135f82bbc90SS.Chekanov 136f82bbc90SS.Chekanov$pieces = explode(":", $ID); 137f82bbc90SS.Chekanov 138f82bbc90SS.Chekanov$filename="article"; 139f82bbc90SS.Chekanovif (count($pieces)>1) 140f82bbc90SS.Chekanov $filename=texifyReference($pieces[1]); // no spaces etc.. 141f82bbc90SS.Chekanov 142f82bbc90SS.Chekanov$filename=DOKU_INC."data/cache/".$filename . ".zwi"; 143f82bbc90SS.Chekanov$zipfilename=$filename; 144f82bbc90SS.Chekanov// clear 145f82bbc90SS.Chekanovunlink( $filename ); 146f82bbc90SS.Chekanov 147f82bbc90SS.Chekanov//$filename="/tmp/".$filename . ".wik"; 148f82bbc90SS.Chekanov//echo $filename; 149f82bbc90SS.Chekanov//die("OK"); 150f82bbc90SS.Chekanov 151f82bbc90SS.Chekanov$zip = new ZipArchive; 152f82bbc90SS.Chekanov$isZipOpen=$zip->open($filename, ZipArchive::CREATE); 153f82bbc90SS.Chekanov 154f82bbc90SS.Chekanovif ($isZipOpen === TRUE) 155f82bbc90SS.Chekanov{ 156f82bbc90SS.Chekanov // Add files to the zip file 157f82bbc90SS.Chekanov //$zip->addFile('test.txt'); 158f82bbc90SS.Chekanov //$zip->addFile('test.pdf'); 159f82bbc90SS.Chekanov // Add random.txt file to zip and rename it to newfile.txt 160f82bbc90SS.Chekanov //$zip->addFile('random.txt', 'newfile.txt'); 161f82bbc90SS.Chekanov // Add a file new.txt file to zip using the text specified 162f82bbc90SS.Chekanov $zip->addFromString('article.dokuwiki', $articleWiki); 163f82bbc90SS.Chekanov 164f82bbc90SS.Chekanov // XHTML for embedding 165f82bbc90SS.Chekanov $xx=$CURRENT_URL."/doku.php?id=".$ID."&do=export_xhtmlbody"; 166f82bbc90SS.Chekanov $body_content = file_get_contents($xx); 167f82bbc90SS.Chekanov 168f82bbc90SS.Chekanov 169f82bbc90SS.Chekanov # push all revisions too 170f82bbc90SS.Chekanov $xr=0; 171f82bbc90SS.Chekanov foreach ($files as $xfile) { 172f82bbc90SS.Chekanov $destination = str_replace(DOKU_INC, "", $xfile); 173f82bbc90SS.Chekanov //print($destination); 174f82bbc90SS.Chekanov $zip->addFile($xfile, $destination); 175f82bbc90SS.Chekanov $xr=$xr+1; 176f82bbc90SS.Chekanov }; 177f82bbc90SS.Chekanov 178f82bbc90SS.Chekanov // metadata 179f82bbc90SS.Chekanov $zip->addFile($dir_changes, $changes); 180f82bbc90SS.Chekanov $zip->addFile($dir_indexed, $indexed); 181f82bbc90SS.Chekanov $zip->addFile($dir_meta, $meta); 182f82bbc90SS.Chekanov 183f82bbc90SS.Chekanov 184f82bbc90SS.Chekanov // css 185f82bbc90SS.Chekanov $css_file=DOKU_INC."/lib/plugins/zwidoku/files/common.css"; 186f82bbc90SS.Chekanov $zip->addFile($css_file, "data/css/common.css"); 187f82bbc90SS.Chekanov $css_file=DOKU_INC."/lib/plugins/zwidoku/files/fonts.css"; 188f82bbc90SS.Chekanov $zip->addFile($css_file, "data/css/fonts.css"); 189f82bbc90SS.Chekanov $css_file=DOKU_INC."/lib/plugins/zwidoku/files/doku.css"; 190f82bbc90SS.Chekanov $zip->addFile($css_file, "data/css/doku.css"); 191f82bbc90SS.Chekanov 192f82bbc90SS.Chekanov 193f82bbc90SS.Chekanov $page_title=tpl_pagetitle(null,true); 194f82bbc90SS.Chekanov //$page_info=tpl_pageinfo(true); 195f82bbc90SS.Chekanov 196f82bbc90SS.Chekanov //die("OK"); 197f82bbc90SS.Chekanov 198f82bbc90SS.Chekanov // list used plugins for consistency 199f82bbc90SS.Chekanov foreach(glob(DOKU_INC."lib/plugins/*", GLOB_ONLYDIR) as $dir) { 200f82bbc90SS.Chekanov $usedplugins[] = basename($dir); 201f82bbc90SS.Chekanov } 202f82bbc90SS.Chekanov 203f82bbc90SS.Chekanov 204f82bbc90SS.Chekanov $zip->addFromString('plugins.json', json_encode($usedplugins)); 205f82bbc90SS.Chekanov 206f82bbc90SS.Chekanov 207f82bbc90SS.Chekanov $DESC = new ShortDescription($articleWiki,$articleTXT); 208f82bbc90SS.Chekanov $description=$DESC->getDescription(); 209f82bbc90SS.Chekanov 210f82bbc90SS.Chekanov $Lang="en"; 211f82bbc90SS.Chekanov 212f82bbc90SS.Chekanov // remove styles 213f82bbc90SS.Chekanov $html_tmp=preg_replace('/(<(script|style)\b[^>]*>).*?(<\/\2>)/is', "$1$3", $body_content); 214f82bbc90SS.Chekanov $html_tmp=strip_tags($html_tmp, '<b>'); // remove bold, so it will not move to upper case; 215f82bbc90SS.Chekanov $html_tmp=strip_tags($html_tmp, '<i>'); // remove italic 216f82bbc90SS.Chekanov $html2TextConverter = new \Html2Text\Html2Text($html_tmp); 217f82bbc90SS.Chekanov $articleTXT = $html2TextConverter->getText(); 218f82bbc90SS.Chekanov 219f82bbc90SS.Chekanov 220f82bbc90SS.Chekanov $content_array= array(); 221f82bbc90SS.Chekanov $content_array["article.dokuwiki"]=sha1($file); //$revision->getSha1(); 222f82bbc90SS.Chekanov $content_array["article.html"]=sha1($body_content); 223f82bbc90SS.Chekanov $content_array["article.txt"]=sha1($articleTXT); 224f82bbc90SS.Chekanov 225f82bbc90SS.Chekanov $generator="DokuWiki"; 226f82bbc90SS.Chekanov 227f82bbc90SS.Chekanov // ZWI -specific metadata for the current revision 228f82bbc90SS.Chekanov $tt['ZWIversion'] = "1.3"; 229f82bbc90SS.Chekanov $tt['Primary'] = "article.dokuwiki"; 230f82bbc90SS.Chekanov $tt['Title'] = $title; 231f82bbc90SS.Chekanov $tt['Namespace'] = $NS; 232f82bbc90SS.Chekanov $tt['LastModified'] = dformat($INFO['lastmod']); 233f82bbc90SS.Chekanov $tt['TimeCreated'] = dformat($INFO['lastmod']); 234f82bbc90SS.Chekanov $tt['Location'] = $fileLastMod; 235f82bbc90SS.Chekanov $tt['Revisions'] = $xr; 236f82bbc90SS.Chekanov $tt['Publisher']=$wgMzwiName; 237f82bbc90SS.Chekanov $tt['Content'] = $content_array; 238f82bbc90SS.Chekanov $tt['GeneratorName'] = $generator; 239f82bbc90SS.Chekanov 240f82bbc90SS.Chekanov // short description 241f82bbc90SS.Chekanov // article information 242f82bbc90SS.Chekanov $pagemeta=pageinfo(); 243f82bbc90SS.Chekanov 244f82bbc90SS.Chekanov // do not expose pass 245f82bbc90SS.Chekanov $pagemeta["userinfo"]["pass"]=""; 246f82bbc90SS.Chekanov $tt['PageInfo'] = $pagemeta; 247f82bbc90SS.Chekanov //$tt['Creator']=$pagemeta['meta'][; 248f82bbc90SS.Chekanov //$tt['Contributors']=$pagemeta['contributor']; 249f82bbc90SS.Chekanov // $mresult = array_merge($tt, $pagemeta); 250f82bbc90SS.Chekanov //$mresult=$tt; 251f82bbc90SS.Chekanov 252f82bbc90SS.Chekanov $tt['Lang'] = $Lang; 253f82bbc90SS.Chekanov //$tt['Comment'] = $title->getEditNotices (); 254f82bbc90SS.Chekanov $tt['Rating'] = ""; 255f82bbc90SS.Chekanov $tt['License'] = $wgMzwiLicense; 256f82bbc90SS.Chekanov $tt['Description']=$description; 257f82bbc90SS.Chekanov $tt['Author']=$author; 258f82bbc90SS.Chekanov 259f82bbc90SS.Chekanov // write 260f82bbc90SS.Chekanov $zip->addFromString('metadata.json', json_encode($tt, JSON_PRETTY_PRINT)); 261f82bbc90SS.Chekanov 262f82bbc90SS.Chekanov 263f82bbc90SS.Chekanov$toReplace = array(); 264f82bbc90SS.Chekanov$replacement = array(); 265f82bbc90SS.Chekanov 266f82bbc90SS.Chekanov$nn=0; 267f82bbc90SS.Chekanov$doc = new DOMDocument(); 268f82bbc90SS.Chekanov@$doc->loadHTML($body_content); 269f82bbc90SS.Chekanov$tags = $doc->getElementsByTagName('img'); 270f82bbc90SS.Chekanovforeach ($tags as $tag) { 271f82bbc90SS.Chekanov $URL=$tag->getAttribute('src'); 272f82bbc90SS.Chekanov //die($URL); 273f82bbc90SS.Chekanov 274f82bbc90SS.Chekanov $pieces = explode($NS.":", $URL); 275f82bbc90SS.Chekanov $img="none"; 276f82bbc90SS.Chekanov if (count($pieces)) 277f82bbc90SS.Chekanov $img=$pieces[1]; 278f82bbc90SS.Chekanov 279f82bbc90SS.Chekanov $output="data/media/".$NS."/".$img; 280f82bbc90SS.Chekanov //echo $output ."\n"; 281f82bbc90SS.Chekanov $imgfile_tmp=$output; 282f82bbc90SS.Chekanov //die($imgfile_tmp); 283f82bbc90SS.Chekanov 284f82bbc90SS.Chekanov $imgfile=DOKU_INC.$output; 285f82bbc90SS.Chekanov //die($imgfile); 286f82bbc90SS.Chekanov 287f82bbc90SS.Chekanov $info = pathinfo($imgfile); 288f82bbc90SS.Chekanov $ext = $info["extension"]; 289f82bbc90SS.Chekanov if (strlen($ext)<1) continue; 290f82bbc90SS.Chekanov 291f82bbc90SS.Chekanov if (!file_exists($imgfile)) continue; 292f82bbc90SS.Chekanov 293f82bbc90SS.Chekanov //die($imgfile); 294f82bbc90SS.Chekanov 295f82bbc90SS.Chekanov //echo $imgfile ."\n"; 296f82bbc90SS.Chekanov $URL = str_replace("&", "&", $URL); 297f82bbc90SS.Chekanov //echo $URL . " -> " . $imgfile; 298f82bbc90SS.Chekanov //die($imgfile); 299f82bbc90SS.Chekanov 300f82bbc90SS.Chekanov //print($URL); 301f82bbc90SS.Chekanov 302f82bbc90SS.Chekanov $zip->addFile($imgfile, $output); 303f82bbc90SS.Chekanov array_push($toReplace,$URL); 304f82bbc90SS.Chekanov array_push($replacement,$imgfile_tmp); 305f82bbc90SS.Chekanov 306f82bbc90SS.Chekanov //$newbody_content = str_replace($URL, $imgfile_tmp, $body_content); 307f82bbc90SS.Chekanov //$newhtml_content = str_replace($URL, $imgfile_tmp, $html_content); 308f82bbc90SS.Chekanov //print($URL. "\n"); 309f82bbc90SS.Chekanov 310f82bbc90SS.Chekanov $nn=$nn+1; 311f82bbc90SS.Chekanov} 312f82bbc90SS.Chekanov 313f82bbc90SS.Chekanov 314f82bbc90SS.Chekanov//print_r($toReplace); 315f82bbc90SS.Chekanov//print_r($replacement); 316f82bbc90SS.Chekanov//die(); 317f82bbc90SS.Chekanov 318f82bbc90SS.Chekanov//$newhtml_content = str_replace($toReplace, $replacement, $html_content); 319f82bbc90SS.Chekanov$newbody_content = str_replace($toReplace, $replacement, $body_content); 320f82bbc90SS.Chekanov 321f82bbc90SS.Chekanov//print($newhtml_content); 322f82bbc90SS.Chekanov//die(); 323f82bbc90SS.Chekanov 324f82bbc90SS.Chekanov/* 325f82bbc90SS.Chekanov$lines = explode("\n", $newbody_content); 326f82bbc90SS.Chekanov$exclude = array(); 327f82bbc90SS.Chekanov$n=0; 328f82bbc90SS.Chekanovforeach ($lines as $line) { 329f82bbc90SS.Chekanov if (strpos($line, 'stylesheet') !== FALSE) { 330f82bbc90SS.Chekanov $exclude[] = "<link rel=\"stylesheet\" href=\"data/css/styles.css\">"; 331f82bbc90SS.Chekanov continue; 332f82bbc90SS.Chekanov } 333f82bbc90SS.Chekanov $exclude[] = $line; 334f82bbc90SS.Chekanov} 335f82bbc90SS.Chekanov$newhtml_content=implode("\n", $exclude); 336f82bbc90SS.Chekanov*/ 337f82bbc90SS.Chekanov 338f82bbc90SS.Chekanov 339f82bbc90SS.Chekanov$start_content = file_get_contents( DOKU_INC."/lib/plugins/zwidoku/html_start" ); 340f82bbc90SS.Chekanov$end_content = file_get_contents( DOKU_INC."/lib/plugins/zwidoku/html_end" ); 341f82bbc90SS.Chekanov 342f82bbc90SS.Chekanov$html_content = $start_content . $newbody_content . $end_content; 343f82bbc90SS.Chekanov 344f82bbc90SS.Chekanov 345f82bbc90SS.Chekanov$zip->addFromString('article.html', $html_content); 346f82bbc90SS.Chekanov// $zip->addFromString('article.xhtml', $newbody_content); 347f82bbc90SS.Chekanov$zip->addFromString("article.txt", $articleTXT); 348f82bbc90SS.Chekanov 349f82bbc90SS.Chekanov 350f82bbc90SS.Chekanov} 351f82bbc90SS.Chekanov 352f82bbc90SS.Chekanov// All files are added, so close the zip file. 353f82bbc90SS.Chekanov$zip->close(); 354f82bbc90SS.Chekanov 355f82bbc90SS.Chekanov/* 356f82bbc90SS.Chekanovif (file_exists($filename)) { 357f82bbc90SS.Chekanov print($filename); 358f82bbc90SS.Chekanov}; 359f82bbc90SS.Chekanov*/ 360f82bbc90SS.Chekanov 361f82bbc90SS.Chekanov/* 362f82bbc90SS.Chekanov if (file_exists($filename)) { 363f82bbc90SS.Chekanov header('Content-Type: application/zip'); 364f82bbc90SS.Chekanov header('Content-Disposition: attachment; filename="'.basename($filename).'"'); 365f82bbc90SS.Chekanov header('Content-Length: ' . filesize($filename)); 366f82bbc90SS.Chekanov flush(); 367f82bbc90SS.Chekanov readfile($filename); 368f82bbc90SS.Chekanov // delete file 369f82bbc90SS.Chekanov unlink($filename); 370f82bbc90SS.Chekanov } 371f82bbc90SS.Chekanov */ 372f82bbc90SS.Chekanov 373f82bbc90SS.Chekanov 374f82bbc90SS.Chekanov//die($ext_path); 375f82bbc90SS.Chekanov 376f82bbc90SS.Chekanov$permissionErr = 0; 377f82bbc90SS.Chekanov$xsub=""; 378f82bbc90SS.Chekanovif ($permissionErr ==0) 379f82bbc90SS.Chekanov $xsub="<input type=\"submit\" name=\"submit\" value=\"Submit to the Encyclosphere Network\" />"; 380f82bbc90SS.Chekanovelse if ($permissionErr == 1) 381f82bbc90SS.Chekanov $xsub="<input type=\"submit\" name=\"submit\" value=\"Submission to the Encyclosphere is disabled\" readonly=\"readonly\" onfocus=\"this.blur();\" disabled/> <br> (not registered user)"; 382f82bbc90SS.Chekanovelse if ($permissionErr == 2) 383f82bbc90SS.Chekanov $xsub="<input type=\"submit\" name=\"submit\" value=\"Submission to the Encyclosphere is disabled\" readonly=\"readonly\" onfocus=\"this.blur();\" disabled/> <br> (did not contribute to this article)"; 384f82bbc90SS.Chekanov 385f82bbc90SS.Chekanov 386f82bbc90SS.Chekanov$submit_script=$ext_path . "/" . "zwipush.php"; 387f82bbc90SS.Chekanov 388f82bbc90SS.Chekanov 389f82bbc90SS.Chekanov$str = <<<EOD 390f82bbc90SS.Chekanov<!DOCTYPE html> 391f82bbc90SS.Chekanov<html class="client-nojs" lang="en" dir="ltr"> 392f82bbc90SS.Chekanov<head> 393f82bbc90SS.Chekanov<meta charset="UTF-8"/> 394f82bbc90SS.Chekanov<title>ZWI submit</title> 395f82bbc90SS.Chekanov<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=0.25, maximum-scale=5.0"/> 396f82bbc90SS.Chekanov<link rel="stylesheet" type="text/css" href="$ext_path/css/zwimaker.css" /> 397f82bbc90SS.Chekanov</head> 398f82bbc90SS.Chekanov<body> 399f82bbc90SS.Chekanov<p> 400f82bbc90SS.Chekanov</p> 401f82bbc90SS.Chekanov<center> 402f82bbc90SS.Chekanov<h3>Export the article '$title' ?</h3> 403f82bbc90SS.Chekanov<p> 404f82bbc90SS.Chekanov</p> 405f82bbc90SS.Chekanov<form action="$submit_script" method="post"> 406f82bbc90SS.Chekanov$xsub 407f82bbc90SS.Chekanov<br>Submit this article to the Encyclosphere Network 408f82bbc90SS.Chekanovthat can be viewed in <a href="https://encycloreader.org/">EncycloReader</a> supported by <a href='https://encyclosphere.org/about/'><img src='$ext_path/img/Encyclosphere_logo24px.png' alt="Encyclosphere" style='vertical-align:middle;margin:0;'/>KSF</a> 409f82bbc90SS.Chekanov<p></p> 410f82bbc90SS.Chekanov<input type="submit" name="download" value="Download to your computer" /> 411f82bbc90SS.Chekanov<br>Save this article to your computer 412f82bbc90SS.Chekanov<p></p> 413f82bbc90SS.Chekanov<input type="button" name="cancel" value="Cancel" onClick="window.location='$newlink';" /> 414f82bbc90SS.Chekanov<input type="hidden" id="zwititle" name="zwititle" value='$titletext' > 415f82bbc90SS.Chekanov<input type="hidden" id="zwifile" name="zwifile" value='$zipfilename' > 416f82bbc90SS.Chekanov<input type="hidden" id="posturl" name="posturl" value='$wgMzwiSubmitUrl' > 417f82bbc90SS.Chekanov<input type="hidden" id="postkey" name="postkey" value='$wgMzwiPassword' > 418f82bbc90SS.Chekanov<input type="hidden" id="backlink" name="backlink" value='$newlink' > 419f82bbc90SS.Chekanov<input type="hidden" id="extpath" name="extpath" value='$ext_path' > 420f82bbc90SS.Chekanov<input type="hidden" id="permission" name="permission" value='$permissionErr' > 421f82bbc90SS.Chekanov</form> 422f82bbc90SS.Chekanov<center> 423f82bbc90SS.Chekanov</body> 424f82bbc90SS.Chekanov</html> 425f82bbc90SS.ChekanovEOD; 426f82bbc90SS.Chekanov 427f82bbc90SS.Chekanov print($str); 428f82bbc90SS.Chekanov 429f82bbc90SS.Chekanov } 430f82bbc90SS.Chekanov else 431f82bbc90SS.Chekanov print "Unauthorized"; 432f82bbc90SS.Chekanov 433f82bbc90SS.Chekanov?> 434f82bbc90SS.Chekanov 435