1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-24 12:03:21 +01:00
php-phpbb/phpBB/phpbb/filesystem.php

51 lines
1022 B
PHP
Raw Normal View History

<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
namespace phpbb;
Merge remote-tracking branch 'github-phpbb/develop' into ticket/11700 * github-phpbb/develop: [ticket/11832] Correct paths in tests [ticket/11832] Correct ROOT_PATH variable [ticket/11832] get_url() from phpbb_template_asset should return web path [ticket/11832] Fix INCLUDE(JS/CSS) [ticket/11832] Fix constructions of phpbb_filesystem [ticket/11832] Fix smiley paths [ticket/11832] Create phpbb_symfony_request to handle initiating symfony_request [ticket/11832] Fix build_url and the S_LOGIN_ACTION [ticket/11832] Changing comments to say app.php rather than index.php [ticket/11832] We must instantiate the $phpbb_filesystem in common [ticket/11832] Fix the web path corrections [ticket/11832] More extensive testing [ticket/11832] Use dirname(__FILE__) [ticket/11832] Use $phpbb_filesystem instead of the container in append_sid Revert "[ticket/11832] Make $phpbb_container a global initiated by the framework" [ticket/11832] Make $phpbb_container a global initiated by the framework [ticket/11832] Fix log tests [ticket/11832] update_web_root_path helper and tests [ticket/11832] Inject dependencies for phpbb_get_web_root_path (also moving) Conflicts: phpBB/common.php phpBB/config/services.yml phpBB/includes/bbcode.php phpBB/includes/functions.php phpBB/includes/functions_messenger.php phpBB/install/index.php phpBB/phpbb/filesystem.php phpBB/phpbb/template/twig/environment.php phpBB/phpbb/template/twig/node/includeasset.php phpBB/phpbb/template/twig/twig.php tests/controller/helper_url_test.php tests/dbal/migrator_test.php tests/extension/manager_test.php tests/extension/metadata_manager_test.php tests/filesystem/clean_path_test.php tests/mock/extension_manager.php tests/template/template_events_test.php tests/template/template_test_case.php tests/template/template_test_case_with_tree.php tests/test_framework/phpbb_functional_test_case.php
2013-09-17 16:56:50 +02:00
/**
* A class with various functions that are related to paths, files and the filesystem
*/
class filesystem
{
/**
* Eliminates useless . and .. components from specified path.
*
* @param string $path Path to clean
* @return string Cleaned path
*/
public function clean_path($path)
{
$exploded = explode('/', $path);
$filtered = array();
foreach ($exploded as $part)
{
if ($part === '.' && !empty($filtered))
{
continue;
}
if ($part === '..' && !empty($filtered) && $filtered[sizeof($filtered) - 1] !== '.' && $filtered[sizeof($filtered) - 1] !== '..')
{
array_pop($filtered);
}
else
{
$filtered[] = $part;
}
}
$path = implode('/', $filtered);
return $path;
}
}