listFiles(); usort($files, function($a, $b) { $f = strcmp($a->folder, $b->folder); if ($f == 0) { return strcmp($a->filename, $b->filename); } return $f; }); return $this->withJson($response, compact('files')); } public function upload(Request $request, Response $response, Handler $handler, Factory $factory): Response { $post = $request->getParsedBody(); $cuenta = $factory->find(Cuenta::class)->one($post['cuenta']); $file = $request->getUploadedFiles()['archivo']; $new_name = implode(' - ', [$cuenta->nombre, $cuenta->categoria()->nombre, $post['fecha']]); $output = [ 'input' => [ 'name' => $file->getClientFilename(), 'type' => $file->getClientMediaType(), 'size' => $file->getSize(), 'error' => $file->getError() ], 'new_name' => $new_name, 'uploaded' => $handler->uploadFile($file, $new_name) ]; return $this->withJson($response, $output); } public function get(Request $request, Response $response, Handler $handler, $folder, $filename): Response { $file = $handler->getFile($folder, $filename); return $response ->withHeader('Content-Type', $handler->getType($folder)) ->withHeader('Content-Disposition', 'attachment; filename=' . $filename) ->withAddedHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0') ->withHeader('Cache-Control', 'post-check=0, pre-check=0') ->withHeader('Pragma', 'no-cache') ->withBody($file); } public function edit(Request $request, Response $response, Handler $handler, Factory $factory, $folder, $filename): Response { $post = json_decode($request->getBody()); $cuenta = $factory->find(Cuenta::class)->one($post->cuenta); $new_name = implode(' - ', [$cuenta->nombre, $cuenta->categoria()->nombre, $post->fecha]); $output = [ 'input' => [ 'folder' => $folder, 'filename' => $filename, 'post' => $post ], 'edited' => $handler->editFilename($folder, $filename, $new_name) ]; return $this->withJson($response, $output); } public function delete(Request $request, Response $response, Handler $handler, $folder, $filename): Response { $output = [ 'input' => [ 'folder' => $folder, 'filename' => $filename ], 'deleted' => $handler->deleteFile($folder, $filename) ]; return $this->withJson($response, $output); } }