MCPcopy Create free account
hub / github.com/error311/FileRise / snippet

Method snippet

src/FileRise/Http/Controllers/FileController.php:3829–4018  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

3827 }
3828
3829 public function snippet(): void
3830 {
3831 header('Content-Type: application/json; charset=utf-8');
3832 if (!$this->requireAuth()) {
3833 return;
3834 }
3835
3836 $storage = StorageRegistry::getAdapter();
3837
3838 // Session -> snapshot user + perms -> release lock
3839 if (session_status() !== PHP_SESSION_ACTIVE) {
3840 @session_start();
3841 }
3842
3843 $user = (string)($_SESSION['username'] ?? '');
3844 $perms = loadUserPermissions($user) ?: [];
3845 $perms['role'] = $_SESSION['role'] ?? ($perms['role'] ?? null);
3846 $perms['admin'] = $_SESSION['admin'] ?? ($perms['admin'] ?? null);
3847 $perms['isAdmin'] = $_SESSION['isAdmin'] ?? ($perms['isAdmin'] ?? null);
3848
3849 @session_write_close();
3850
3851 // ---- Input ----
3852 $folder = isset($_GET['folder']) ? (string)$_GET['folder'] : 'root';
3853 $folder = str_replace('\\', '/', trim($folder));
3854 $folder = ($folder === '' || $folder === 'root') ? 'root' : trim($folder, '/');
3855
3856 $file = isset($_GET['file']) ? (string)$_GET['file'] : '';
3857 $file = trim($file);
3858
3859 if ($file === '') {
3860 http_response_code(400);
3861 echo json_encode(['error' => 'Missing file parameter.']);
3862 return;
3863 }
3864
3865 // ---- ACL ----
3866 if (class_exists('ACL')) {
3867 $folderNorm = ACL::normalizeFolder($folder);
3868 $accessErr = $this->enforceSingleFileReadAccess($folderNorm, $file, $user, $perms);
3869 if ($accessErr !== null) {
3870 http_response_code(403);
3871 echo json_encode(['error' => $accessErr]);
3872 return;
3873 }
3874 $folder = $folderNorm;
3875 }
3876
3877 // ---- Resolve file via model ----
3878 try {
3879 $info = FileModel::getDownloadInfo($folder, $file);
3880 } catch (\Throwable $e) {
3881 http_response_code(500);
3882 echo json_encode(['error' => 'Internal error.']);
3883 return;
3884 }
3885
3886 if (!is_array($info) || !empty($info['error'] ?? null)) {

Callers 1

snippet.phpFile · 0.80

Calls 15

requireAuthMethod · 0.95
normalizeSnippetTextMethod · 0.95
mbSubstrSafeMethod · 0.95
filesizeSafeMethod · 0.95
extractDocxSnippetMethod · 0.95
extractXlsxSnippetMethod · 0.95
extractPptxSnippetMethod · 0.95
loadUserPermissionsFunction · 0.85
getAdapterMethod · 0.80
getDownloadInfoMethod · 0.80

Tested by

no test coverage detected