| | 284 | |
|---|
| | 285 | function _absolute_path_difference($source, $target) |
|---|
| | 286 | { |
|---|
| | 287 | if (!sfToolkit::isPathAbsolute($source) || !sfToolkit::isPathAbsolute($target)) |
|---|
| | 288 | { |
|---|
| | 289 | |
|---|
| | 290 | return $target; |
|---|
| | 291 | } |
|---|
| | 292 | |
|---|
| | 293 | $source = split(DIRECTORY_SEPARATOR, rtrim($source, DIRECTORY_SEPARATOR)); |
|---|
| | 294 | $target = split(DIRECTORY_SEPARATOR, rtrim($target, DIRECTORY_SEPARATOR)); |
|---|
| | 295 | |
|---|
| | 296 | if ($source == $target) |
|---|
| | 297 | { |
|---|
| | 298 | return '.'; |
|---|
| | 299 | } |
|---|
| | 300 | |
|---|
| | 301 | for ($i = 0; $i < count($source); $i++) |
|---|
| | 302 | { |
|---|
| | 303 | if (! isset($target[$i]) || $target[$i] != $source[$i]) |
|---|
| | 304 | { |
|---|
| | 305 | $source_path_diff = array_fill(0, count($source) - $i, '..'); |
|---|
| | 306 | $target_path_diff = array_slice($target, $i); |
|---|
| | 307 | $merge = array_merge($source_path_diff, $target_path_diff); |
|---|
| | 308 | |
|---|
| | 309 | return join(DIRECTORY_SEPARATOR, $merge); |
|---|
| | 310 | } |
|---|
| | 311 | } |
|---|
| | 312 | |
|---|
| | 313 | return join(DIRECTORY_SEPARATOR, array_slice($target, count($source))); |
|---|
| | 314 | } |
|---|
| | 315 | |
|---|