function GetFullPath(&$path, $basepath = '') { // Full Path might return a doubled path like /~gamma/documentation/lib//~gamma/documentation/lib/tpl/clearreports/./_print-images/background-bottom.jpg $path = str_replace("\\", "/", $path); //If on Windows $path = preg_replace('/^\\/\\//', 'http://', $path); // mPDF 5.6.27 $regexp = '|^./|'; // Inadvertently corrects "./path/etc" and "//www.domain.com/etc" $path = preg_replace($regexp, '', $path); if (preg_match("/^.+\\/\\.\\.\\//", $path)) { // ../ not at the beginning $newpath = array(); $oldpath = explode('/', $path); foreach ($oldpath as $slice) { if ($slice == ".." && count($newpath) > 0) { array_pop($newpath); continue; } $newpath[] = $slice; } $path = implode('/', $newpath); } parent::GetFullPath($path, $basepath); $regex = "/(" . preg_quote(DOKU_BASE, '/') . ".+)\\1/"; if (preg_match($regex, $path, $matches)) { $path = preg_replace($regex, "\\1", $path); } }