in classes/api/base.php [1043:1110]
protected function create_postdata_from_folder($title, $folder, $boundary) {
$dom = new \DOMDocument();
$pagefile = join(DIRECTORY_SEPARATOR, array(rtrim($folder, DIRECTORY_SEPARATOR), 'page.html'));
if (!$dom->loadHTML(mb_convert_encoding(file_get_contents($pagefile), 'HTML-ENTITIES', 'UTF-8'))) {
\local_onenote\utils::debug('Could not parse page HTML', 'create_postdata_from_folder', $pagefile);
return null;
}
$xpath = new \DOMXPath($dom);
$doc = $dom->getElementsByTagName("body")->item(0);
$this->handle_garbage_chars($xpath);
$imgnodes = $xpath->query("//img");
$imgdata = '';
$eol = "\r\n";
if ($imgnodes && ($imgnodes->length > 0)) {
foreach ($imgnodes as $imgnode) {
$srcnode = $imgnode->attributes->getNamedItem("src");
if (!$srcnode) {
continue;
}
$srcrelpath = urldecode($srcnode->nodeValue);
$srcfilename = substr($srcrelpath, strlen('./page_files/'));
$srcpath = join(DIRECTORY_SEPARATOR, array(rtrim($folder, DIRECTORY_SEPARATOR), substr($srcrelpath, 2)));
$contents = file_get_contents($srcpath);
if (!$contents || (count($contents) == 0)) {
continue;
}
$srcfilename = urlencode($srcfilename);
$srcnode->nodeValue = "name:" . $srcfilename;
// Remove data_fullres_src if present.
if ($imgnode->attributes->getNamedItem("data-fullres-src")) {
$imgnode->removeAttribute("data-fullres-src");
}
$imgdata .= '--' . $boundary . $eol;
$imgdata .= 'Content-Disposition: form-data; name="' . $srcfilename . '"; filename="' . $srcfilename . '"' . $eol;
$imgdata .= 'Content-Type: image/jpeg' . $eol .$eol;
$imgdata .= $contents . $eol;
}
}
// Extract just the content of the body.
$domclone = new \DOMDocument('1.0', 'UTF-8');
foreach ($doc->childNodes as $child) {
$domclone->appendChild($domclone->importNode($child, true));
}
$output = $domclone->saveHTML($domclone);
$date = date("Y-m-d H:i:s");
$postdata = '';
$postdata .= '--' . $boundary . $eol;
$postdata .= 'Content-Disposition: form-data; name="Presentation"' . $eol;
$postdata .= 'Content-Type: application/xhtml+xml' . $eol . $eol;
$postdata .= '<?xml version="1.0" encoding="utf-8" ?><html xmlns="http://www.w3.org/1999/xhtml" lang="en-us">' . $eol;
$postdata .= '<head><title>' . $title . '</title>' . '<meta name="created" value="' . $date . '"/></head>' . $eol;
$postdata .= '<body style="font-family:\'Helvetica\',\'Helvetica Neue\', Arial, \'Lucida Grande\',';
$postdata .= 'sans-serif;font-size:10.5pt; color:rgb(51,51,51);">' . $output . '</body>' . $eol;
$postdata .= '</html>' . $eol;
$postdata .= $imgdata . $eol;
$postdata .= '--' . $boundary . '--' . $eol . $eol;
return $postdata;
}