Källkod

Välj en PHP-fil för att visa dess källkod.

source.php

<?php
/** Hämtar PHP-filer i projektet så att de kan visas i viewsource.php. */
function getProjectPhpFiles($projectRoot)
{
    
$files = [];
    
$iterator = new RecursiveIteratorIterator(
        new 
RecursiveDirectoryIterator($projectRoot, FilesystemIterator::SKIP_DOTS)
    );

    foreach (
$iterator as $file) {
        if (!
$file->isFile() || strtolower($file->getExtension()) !== 'php') {
            continue;
        }

        
$relativePath = substr($file->getPathname(), strlen($projectRoot) + 1);
        
$files[] = str_replace(DIRECTORY_SEPARATOR, '/', $relativePath);
    }

    
sort($files, SORT_NATURAL | SORT_FLAG_CASE);
    return 
$files;
}

/** Returnerar bara PHP-filer som faktiskt ligger i projektmappen. */
function getSafeProjectPhpPath($projectRoot, $relativePath)
{
    
$root = realpath($projectRoot);
    
$candidate = realpath($root . DIRECTORY_SEPARATOR . str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $relativePath));

    if (
$candidate === false
        
|| strpos($candidate, $root . DIRECTORY_SEPARATOR) !== 0
        
|| !is_file($candidate)
        || 
strtolower(pathinfo($candidate, PATHINFO_EXTENSION)) !== 'php') {
        return 
false;
    }

    return 
$candidate;
}