xref: /plugin/zwidoku/getEncyc.php (revision 1cc518519efdb2527f225b3a3fd18643f0187f9b)
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("&", "&amp;", $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