setBreaksEnabled(true); function get_homepage() { $homepage = get_html(get_url("introduction", "markdown")); $exerpt = trim(strip_tags($homepage)); if(strpos($exerpt, "–––––") === 0): $homepage = get_html(get_url("help", "markdown")); endif; return $homepage; } function get_pads_list() { global $libreto_name, $custom_css; $pads_list = file(get_url("menu", "txt")); $pads_list = array_map('trim', $pads_list); // if pad is filled with default text, make pads_list empty $firstline = $pads_list[0]; if( strpos($firstline, "–––––") === 0 ) : $pads_list = false; endif; // if a pad is named style.css, use it as css file if($pads_list): foreach ($pads_list as $key=>$pad_name) : if($pad_name == "style.css"): array_splice($pads_list, $key, 1); $custom_css = get_url($pad_name, "txt"); endif; endforeach; endif; return $pads_list; } function get_url($name, $format = "pad") { global $pads_host, $instance_name, $pads_params, $libreto_name; $server = "http://" . $_SERVER["SERVER_NAME"]; $pads_prefix = urlencode(strtolower($instance_name)) . "+" . urlencode($libreto_name) . "+"; $pad_name = $pads_prefix . urlencode($name); $css_name = $pads_prefix . urlencode("style.css"); $pad_url = $pads_host . "/p/" . $pad_name; if($name == 'help') : $pad_url = "https://annuel2.framapad.org/p/libreto-help"; if ($format == "markdown") { return $pad_url . "/export/markdown"; } else { return $server . "/reader.php?host=$pads_host&pad=libreto-help&css=$css_name"; } endif; switch ($format) : case 'pad': if($_SESSION['mode'] == "write") : return $pad_url . $pads_params ; else: //var_dump($pad_url); return $server . "/reader.php?host=$pads_host&pad=$pad_name&css=$css_name" ; endif; break; default: return $pad_url . "/export/" . $format ; break; endswitch; } function get_html($markdown_url) { global $Parsedown, $Purifier; $markdown = file_get_contents($markdown_url); // remove \url{} tags $markdown = preg_replace('#\\\url\{(.+)\}#i', '$1', $markdown); // replace underline tags $markdown = preg_replace('#underline(.+)underline#', '$1', $markdown); // remove slashes $markdown = stripslashes($markdown); $html = $Parsedown->text($markdown); // sanitize html $html = $Purifier->purify($html); return $html; } function export() { global $libreto_name, $homepage, $pads_list; $title = $libreto_name; $introduction = $homepage; $chapters = $pads_list; $chapters = array_map(function($chapter){ $url = get_url($chapter, 'markdown'); $html = get_html($url); return array("title" => $chapter, "content" => $html); }, $chapters); $odt = new \CatoTH\HTML2OpenDocument\Text(); $odt->addHtmlTextBlock('