Merge remote-tracking branch 'origin/dev'
This commit is contained in:
commit
86a180123b
1 changed files with 30 additions and 5 deletions
35
src/Path.php
35
src/Path.php
|
|
@ -458,16 +458,41 @@ class Path
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Обновить относительную ссылку при переносе папки
|
* Обновить относительную ссылку в файле при переносе папки
|
||||||
*
|
*
|
||||||
* @param String $relativePath - относительная ссылка до переноса
|
* @param String $relativePath - относительная ссылка до переноса
|
||||||
* @param String $file - абсолютный путь к файлу содержащему ссылку до переноса
|
* @param String $fileDir - абсолютный путь к директории файла содержащего ссылку до переноса
|
||||||
* @param String $srcDir - абсолютный путь к переносимой папке до переноса
|
* @param String $srcDir - абсолютный путь к переносимой директории до переноса
|
||||||
* @param String $dstDir - абсолютный путь к переносимой папке после переноса
|
* @param String $dstDir - абсолютный путь к переносимой директории после переноса
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
static function updateRelativePathOnDirectoryMove($relativePath, $file, $srcDir = NULL , $dstFile = NULL) {
|
static function updateRelativePathOnDirectoryMove($relativePath, $fileDir, $srcDir, $dstDir) {
|
||||||
|
$relativePath = self::normalize($relativePath);
|
||||||
|
$fileDir = self::normalize($fileDir);
|
||||||
|
$srcDir = self::normalize($srcDir);
|
||||||
|
$dstDir = self::normalize($dstDir);
|
||||||
|
|
||||||
|
$stepsUpTotal = 0;
|
||||||
|
$relativePathParts = self::listFromString($relativePath);
|
||||||
|
foreach ($relativePathParts as $part) {
|
||||||
|
$stepsUpTotal += ($part==".."?1:0);
|
||||||
|
}
|
||||||
|
|
||||||
|
$fileDepthInFolder = count(self::listFromString($fileDir)) - count(self::listFromString($srcDir));
|
||||||
|
|
||||||
|
//проверка того, что путь выходит за пределы переносимой папки
|
||||||
|
if($stepsUpTotal <= $fileDepthInFolder) {
|
||||||
|
//возврат изначального пути если не выходит
|
||||||
|
return $relativePath;
|
||||||
|
} else {
|
||||||
|
//если выходит
|
||||||
|
//путь от корня к файлу, на который указывает ссылка
|
||||||
|
$oldAbsoluteLinkDstPath = self::normalize(self::join($fileDir, $relativePath));
|
||||||
|
$pathFromDir = self::relative($fileDir, $srcDir);
|
||||||
|
$newAbsoluteLinkSrcPath = self::normalize(self::join($dstDir, $pathFromDir));
|
||||||
|
return self::relative($oldAbsoluteLinkDstPath, $newAbsoluteLinkSrcPath);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue