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 $file - абсолютный путь к файлу содержащему ссылку до переноса
|
||||
* @param String $srcDir - абсолютный путь к переносимой папке до переноса
|
||||
* @param String $dstDir - абсолютный путь к переносимой папке после переноса
|
||||
* @param String $fileDir - абсолютный путь к директории файла содержащего ссылку до переноса
|
||||
* @param String $srcDir - абсолютный путь к переносимой директории до переноса
|
||||
* @param String $dstDir - абсолютный путь к переносимой директории после переноса
|
||||
*
|
||||
* @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