protected function getAboutXhtmlWikisource() { try { $content = $this->api->getPageAsync('MediaWiki:Wsexport_about')->wait(); } catch (Exception $e) { try { $oldWikisourceApi = new Api(''); $content = $oldWikisourceApi->getPageAsync('MediaWiki:Wsexport_about')->wait(); } catch (Exception $e) { $content = ''; } } if ($content !== '') { $document = new DOMDocument('1.0', 'UTF-8'); $document->loadXML($content); $parser = new PageParser($document); $document = $parser->getContent(true); $this->setTempFileContent('about.xhtml', str_replace('href="//', 'href="http://', $document->saveXML())); } }
public function getMetadata($title, $isMetadata, DOMDocument $doc) { $page_list = [$title]; $parser = new PageParser($doc); $book = new Book(); $book->options = $this->options; $book->title = $title; $book->lang = $this->api->lang; $metadataSrc = $parser->getMetadata('ws-metadata'); if ($metadataSrc == '') { $metadataSrc = $title; $metadataParser = $parser; } else { $doc = $this->getDocument($metadataSrc); $metadataParser = new PageParser($doc); } $book->type = $metadataParser->getMetadata('ws-type'); $book->name = htmlspecialchars($metadataParser->getMetadata('ws-title')); if ($book->name == '') { $book->name = str_replace('_', ' ', $metadataSrc); } $book->periodical = htmlspecialchars($metadataParser->getMetadata('ws-periodical')); $book->author = htmlspecialchars($metadataParser->getMetadata('ws-author')); $book->translator = htmlspecialchars($metadataParser->getMetadata('ws-translator')); $book->illustrator = htmlspecialchars($metadataParser->getMetadata('ws-illustrator')); $book->school = htmlspecialchars($metadataParser->getMetadata('ws-school')); $book->publisher = htmlspecialchars($metadataParser->getMetadata('ws-publisher')); $book->year = htmlspecialchars($metadataParser->getMetadata('ws-year')); $book->place = htmlspecialchars($metadataParser->getMetadata('ws-place')); $book->key = $metadataParser->getMetadata('ws-key'); $book->progress = $metadataParser->getMetadata('ws-progress'); $book->volume = $metadataParser->getMetadata('ws-volume'); $book->scan = str_replace(' ', '_', $metadataParser->getMetadata('ws-scan')); $pictures = []; if ($this->options['images'] || $isMetadata) { $book->cover = $metadataParser->getMetadata('ws-cover'); if ($book->cover != '') { $pictures[$book->cover] = $this->getCover($book->cover, $book->lang); if ($pictures[$book->cover]->url == '') { $book->cover = ''; } } } if ($this->options['categories']) { $book->categories = $this->getCategories($metadataSrc); } $pageTitles = $parser->getPagesList(); $namespaces = $this->getNamespaces(); if (!$isMetadata) { if (!$parser->metadataIsSet('ws-noinclude')) { $book->content = $parser->getContent(true); if ($this->options['images']) { $pictures = array_merge($pictures, $parser->getPicturesList()); } } $chapterTitles = $parser->getFullChaptersList($title, $page_list, $namespaces); $chapters = $this->getPages($chapterTitles); foreach ($chapters as $chapter_key => $chapter) { $parser = new PageParser($chapter->content); if ($parser->metadataIsSet('ws-noinclude')) { unset($chapters[$chapter_key]); continue; } $pageTitles = array_merge($pageTitles, $parser->getPagesList()); $chapter->content = $parser->getContent(false); if ($this->options['images']) { $pictures = array_merge($pictures, $parser->getPicturesList()); } $subpagesTitles = $parser->getChaptersList($chapter, $page_list, $namespaces); if (!empty($subpagesTitles)) { $subpages = $this->getPages($subpagesTitles); foreach ($subpages as $subpage_key => $subpage) { $parser = new PageParser($subpage->content); if ($parser->metadataIsSet('ws-noinclude')) { unset($chapters[$subpage_key]); continue; } $pageTitles = array_merge($pageTitles, $parser->getPagesList()); $subpage->content = $parser->getContent(false); if ($this->options['images']) { $pictures = array_merge($pictures, $parser->getPicturesList()); } } $chapterTitles = array_merge($chapterTitles, $subpagesTitles); $chapter->chapters = $subpages; } } $book->chapters = $chapters; if ($this->options['credits']) { $creditPromises = $this->startCredits($book, $chapterTitles, $pageTitles, $pictures); } $pictures = $this->getPicturesData($pictures); if (!empty($creditPromises)) { $book->credits = $this->finishCredit($creditPromises); } } $book->pictures = $pictures; return $book; }