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