Skip to content
Snippets Groups Projects
content-update-service.php 2.4 KiB
Newer Older
<?php
    include 'config.php';
    include 'session-service.php';
Sebastian Rosauer's avatar
Sebastian Rosauer committed
    include 'validation-service.php';
    $validation = checkRequest(['sessionId', 'title', 'directory', 'content']);
    if ($validation !== true) {
        $payload = [
            'success' => false,
            'message' => $validation
        http_response_code(400);
        exit(json_encode($payload));
    }

    $user = getUserByID($_POST['sessionId']);
    if (!$user){
Sebastian Rosauer's avatar
Sebastian Rosauer committed
        $payload = [
            'success' => false,
            'message' => 'Authentifizierung erforderlich'
        http_response_code(401);
        exit(json_encode($payload));
    }

    $filename = $assetsDir.'/docs'.$_POST['directory'].'/'.$_POST['title'];
    $file = false;
    if (file_exists($filename)){
        $file = json_decode(file_get_contents($filename), true);
        if ($file['author'] !=  $user){
            $payload = [
                'success' => false,
                'message' => 'Keine Berechtigung'
            ];
            http_response_code(403);
            exit(json_encode($payload));
        }
    }

    if ($_POST['content'] == ''){
        if ($file){
            unlink($filename);

            $directory = $assetsDir.'/docs'.$_POST['directory'];
            while ($directory != $assetsDir.'/docs/' && count(scandir($directory)) <= 2) {
                rmdir($directory);
                $directory = substr($directory, 0, strrpos($directory, '/') );
            }
        }
        $payload = [
            'success' => true,
            'message' => 'Dokument wurde gelöscht'
        ];
        http_response_code(200);
    } else {
        $payload = [
            'success' => true,
            'message' => 'Dokument wurde aktualisiert'
        ];
        http_response_code(200);
        if (!$file){
            $payload['message'] = 'Dokument wurde angelegt';
            http_response_code(201);
        }
        if (!file_exists($assetsDir.'/docs'.$_POST['directory'])){
            mkdir($assetsDir.'/docs'.$_POST['directory'], 0777, true);
        }

        $fileContent = [
            'directory' => $_POST['directory'],
            'title' => $_POST['title'],
            'author' => $user,
            'content' => $_POST['content']
        ];
        $file = fopen($filename, 'w');
        fwrite($file, json_encode($fileContent));
        fclose($file);
    }

    http_response_code(200);
    exit(json_encode($payload));