New function to help resolve not-found files/directories (#217)

* ServerUIPropertiesMenu for Configurator to edit builtin UIProperties of MP

* fixed unregister-functions of CallbackManager

* Reducing menuItemHeight in Configurator to avoid overlapping of the menu items

* Fully rebuild the admins menu after a player rights changed

* Added function to FileUtil to improve realpath, so symbolic links can be resolved

* Fixed indentation

* Update FileUtil.php

Fixed error in case of an absolute path on Unix-like systems.
This commit is contained in:
axelalex2 2019-04-27 19:22:42 +02:00 committed by Lukas Kremsmayr
parent e241f729ce
commit 0c28d683f5
1 changed files with 27 additions and 0 deletions

View File

@ -236,4 +236,31 @@ abstract class FileUtil {
public static function isHiddenFile($fileName) {
return (substr($fileName, 0, 1) === '.');
}
/**
* Shortens a path.
* Opposed to realpath, it follows symbolic links.
*
* @param string $path
* @return string
*/
public static function shortenPath(string $path) {
$root = substr($path, 0, 1) === '/';
$path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
$parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
$absolutes = array();
foreach ($parts as $part) {
if ('.' === $part)
continue;
if ('..' === $part)
array_pop($absolutes);
else
array_push($absolutes, $part);
}
$path = implode(DIRECTORY_SEPARATOR, $absolutes);
if ($root)
$path = '/'.$path;
return $path;
}
}