<?php
/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
case Router::POST:
case Router::PUT:
self::checkAllowedScope(self::SCOPE_WRITE);
-
+
if (!self::getCurrentUserID()) {
throw new HTTPException\ForbiddenException($this->t('Permission denied.'));
}
break;
- }
+ }
}
return parent::run($httpException, $request);
return 'Link: <' . $next . '>; rel="next", <' . $prev . '>; rel="prev"';
}
+ /**
+ * Get the "link" header with "next" and "prev" links for an offset/limit type call
+ * @return string
+ */
+ protected static function getOffsetAndLimitLinkHeader(int $offset, int $limit): string
+ {
+ $request = self::$request;
+
+ unset($request['offset']);
+ $request['limit'] = $limit;
+
+ $prev_request = $next_request = $request;
+
+ $prev_request['offset'] = $offset - $limit;
+ $next_request['offset'] = $offset + $limit;
+
+ $command = DI::baseUrl() . '/' . DI::args()->getCommand();
+
+ $prev = $command . '?' . http_build_query($prev_request);
+ $next = $command . '?' . http_build_query($next_request);
+
+ if ($prev_request['offset'] >= 0) {
+ return 'Link: <' . $next . '>; rel="next", <' . $prev . '>; rel="prev"';
+ } else {
+ return 'Link: <' . $next . '>; rel="next"';
+ }
+ }
+
/**
* Set the "link" header with "next" and "prev" links
* @return void
}
}
+ /**
+ * Set the "link" header with "next" and "prev" links
+ * @return void
+ */
+ protected static function setLinkHeaderByOffsetLimit(int $offset, int $limit)
+ {
+ $header = self::getOffsetAndLimitLinkHeader($offset, $limit);
+ if (!empty($header)) {
+ header($header);
+ }
+ }
+
+ /**
+ * Check if the app is known to support quoted posts
+ *
+ * @return bool
+ */
+ public static function appSupportsQuotes(): bool
+ {
+ $token = self::getCurrentApplication();
+ return (!empty($token['name']) && in_array($token['name'], ['Fedilab']));
+ }
+
/**
* Get current application token
*