protected function processChapterLinks(&$xmlDoc, $externalReferences = EPub::EXTERNAL_REF_ADD, $baseDir = "", $htmlDir = "", $backPath = "")
{
if ($this->isFinalized || $externalReferences === EPub::EXTERNAL_REF_IGNORE) {
return false;
}
// process link tags.
$links = $xmlDoc->getElementsByTagName("link");
$linkCount = $links->length;
for ($linkIdx = 0; $linkIdx < $linkCount; $linkIdx++) {
/** @var $link \DOMElement */
$link = $links->item($linkIdx);
$source = $link->attributes->getNamedItem("href")->nodeValue;
$sourceData = null;
$pathData = pathinfo($source);
$internalSrc = $pathData['basename'];
if (preg_match('#^(http|ftp)s?://#i', $source) == 1) {
$urlinfo = parse_url($source);
if (strpos($urlinfo['path'], $baseDir . "/") !== false) {
$internalSrc = substr($urlinfo['path'], strpos($urlinfo['path'], $baseDir . "/") + strlen($baseDir) + 1);
}
@($sourceData = FileHelper::getFileContents($source));
} else {
if (strpos($source, "/") === 0) {
@($sourceData = file_get_contents($this->docRoot . $source));
} else {
@($sourceData = file_get_contents($this->docRoot . $baseDir . "/" . $source));
}
}
if (!empty($sourceData)) {
if (!array_key_exists($internalSrc, $this->fileList)) {
$mime = $link->attributes->getNamedItem("type")->nodeValue;
if (empty($mime)) {
$mime = "text/plain";
}
if ($mime == "text/css") {
$this->processCSSExternalReferences($sourceData, $externalReferences, $baseDir, $htmlDir);
$this->addCSSFile($internalSrc, $internalSrc, $sourceData, EPub::EXTERNAL_REF_IGNORE, $baseDir);
$link->setAttribute("href", $backPath . $internalSrc);
} else {
$this->addFile($internalSrc, $internalSrc, $sourceData, $mime);
}
$this->fileList[$internalSrc] = $source;
} else {
$link->setAttribute("href", $backPath . $internalSrc);
}
}
// else do nothing, if the link is local, and missing, assume it's been generated.
}
return true;
}