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); } } }