示例#1
0
 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);
     }
 }