1) { $channel = channelx_by_nick(argv(1)); } if (!$channel) { http_status_exit(404, 'Not found.'); } $sql_extra = permissions_sql($channel['channel_id'], $observer_xchan); if (argc() > 2) { $folder = argv(2); $r = q("select * from attach where is_dir = 1 and hash = '%s' and uid = %d $sql_extra limit 1", dbesc($folder), intval($channel['channel_id']) ); $allowed = (($r) ? attach_can_view($channel['channel_id'], $observer_xchan, $r[0]['hash'] /*,$bear */) : false); } else { $folder = EMPTY_STR; $allowed = perm_is_allowed($channel['channel_id'], $observer_xchan, 'view_storage'); } if (!$allowed) { http_status_exit(403, 'Permission denied.'); } $x = q("select * from attach where folder = '%s' and uid = %d $sql_extra", dbesc($folder), intval($channel['channel_id']) ); $contents = []; if ($x) { foreach ($x as $xv) { if (intval($xv['is_dir'])) { continue; } if (!attach_can_view($channel['channel_id'], $observer_xchan, $xv['hash'] /*,$bear*/)) { continue; } if (intval($xv['is_photo'])) { $contents[] = z_root() . '/photo/' . $xv['hash']; } } } $obj = Activity::encode_simple_collection($contents, App::$query_string, 'OrderedCollection', count($contents)); as_return_and_die($obj, $channel); } } }