<?php OCP\JSON::checkLoggedIn(); \OC::$server->getSession()->close(); // Load the files $dir = isset($_GET['dir']) ? $_GET['dir'] : ''; $sortAttribute = isset($_GET['sort']) ? $_GET['sort'] : 'name'; $sortDirection = isset($_GET['sortdirection']) ? $_GET['sortdirection'] === 'desc' : false; $data = array(); // make filelist try { $files = \OCA\Files_Trashbin\Helper::getTrashFiles($dir, \OCP\User::getUser(), $sortAttribute, $sortDirection); } catch (Exception $e) { header("HTTP/1.0 404 Not Found"); exit; } $encodedDir = \OCP\Util::encodePath($dir); $data['permissions'] = 0; $data['directory'] = $dir; $data['files'] = \OCA\Files_Trashbin\Helper::formatFileInfos($files); OCP\JSON::success(array('data' => $data));
/** * Gets information about trashed notes * * @NoAdminRequired * @NoCSRFRequired * @CORS * * @return string */ public function getTrashedNotes() { $dir = $this->request->getParam("dir", ""); $customFileExtensions = $this->request->getParam("extensions", array()); if (!is_array($customFileExtensions)) { $customFileExtensions = array(); } $noteFileExtensions = array_merge(array("md", "txt"), $customFileExtensions); // remove leading "/" if (substr($dir, 0, 1) === "/") { $dir = substr($dir, 1); } // remove trailing "/" if (substr($dir, -1) === "/") { $dir = substr($dir, 0, -1); } $sortAttribute = $this->request->getParam("sort", "mtime"); $sortDirectionParam = $this->request->getParam("sortdirection", ""); $sortDirection = $sortDirectionParam !== "" ? $sortDirectionParam === 'desc' : true; $filesInfo = array(); // generate the file list try { $files = Helper::getTrashFiles("/", $this->user, $sortAttribute, $sortDirection); $filesInfo = Helper::formatFileInfos($files); } catch (Exception $e) { } // only return notes (with extension ".txt", ".md" and the custom extensions) in the $dir directory $resultFilesInfo = array(); foreach ($filesInfo as $fileInfo) { $pathParts = pathinfo($fileInfo["name"]); // if $fileInfo["extraData"] is not set we will have to show the note files from all folders in QOwnNotes $isInDir = isset($fileInfo["extraData"]) ? strpos($fileInfo["extraData"], $dir . "/" . $fileInfo["name"]) === 0 : true; $isNoteFile = in_array($pathParts["extension"], $noteFileExtensions); if ($isInDir && $isNoteFile) { $timestamp = (int) ($fileInfo["mtime"] / 1000); $fileName = '/files_trashbin/files/' . $fileInfo["name"] . ".d{$timestamp}"; $view = new \OC\Files\View('/' . $this->user); $data = ""; // load the file data $handle = $view->fopen($fileName, 'rb'); if ($handle) { $chunkSize = 8192; // 8 kB chunks while (!feof($handle)) { $data .= fread($handle, $chunkSize); } } $resultFilesInfo[] = ["noteName" => $pathParts["filename"], "fileName" => $fileInfo["name"], "timestamp" => $timestamp, "dateString" => $fileInfo["date"], "data" => $data]; } } $data = array(); $data['directory'] = $dir; $data['notes'] = $resultFilesInfo; return $data; }