X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FBaseApi.php;h=b5fc8c8499254b97e74f2ab670cc8a6b984be71a;hb=f8018f8dfe0183ce7c8f7e8460e0d9fbd5b9395b;hp=4c16ab20e29609ce7b88ff6cfef872e50a21ab30;hpb=1f6578229e55689138c0a59b08dc2a5d2774233f;p=friendica.git diff --git a/src/Module/BaseApi.php b/src/Module/BaseApi.php index 4c16ab20e2..b5fc8c8499 100644 --- a/src/Module/BaseApi.php +++ b/src/Module/BaseApi.php @@ -129,7 +129,18 @@ class BaseApi extends BaseModule $condition = DBA::mergeConditions($condition, ["`uri-id` > ?", intval($request['min_id'])]); } } else { - $order_field = $requested_order; + switch ($requested_order) { + case TimelineOrderByTypes::RECEIVED: + case TimelineOrderByTypes::CHANGED: + case TimelineOrderByTypes::EDITED: + case TimelineOrderByTypes::CREATED: + case TimelineOrderByTypes::COMMENTED: + $order_field = $requested_order; + break; + default: + throw new \Exception("Unrecognized request order: $requested_order"); + } + if (!empty($request['max_id'])) { $condition = DBA::mergeConditions($condition, ["`$order_field` < ?", DateTimeFormat::convert($request['max_id'], DateTimeFormat::MYSQL)]); } @@ -159,19 +170,11 @@ class BaseApi extends BaseModule $requested_order = $request['friendica_order']; switch ($requested_order) { case TimelineOrderByTypes::CHANGED: - $order_field = 'changed'; - break; case TimelineOrderByTypes::CREATED: - $order_field = 'created'; - break; case TimelineOrderByTypes::COMMENTED: - $order_field = 'commented'; - break; case TimelineOrderByTypes::EDITED: - $order_field = 'edited'; - break; case TimelineOrderByTypes::RECEIVED: - $order_field = 'received'; + $order_field = $requested_order; break; case TimelineOrderByTypes::ID: default: @@ -184,37 +187,46 @@ class BaseApi extends BaseModule $params['order'] = [$order_field => true]; } - $params['limit']= $request['limit']; + $params['limit'] = $request['limit']; return $params; } - protected function updateBoundaries(Status $status, array $post_item, string $order) { - ; + /** + * Update the ID/time boundaries for this result set. Used for building Link Headers + * + * @param Status $status + * @param array $post_item + * @param string $order + * @return void + * @throws \Exception + */ + protected function updateBoundaries(Status $status, array $post_item, string $order) + { try { switch ($order) { case TimelineOrderByTypes::CHANGED: - if (!empty($status->friendicaExtension()->changedAt())){ + if (!empty($status->friendicaExtension()->changedAt())) { self::setBoundaries(new DateTime(DateTimeFormat::utc($status->friendicaExtension()->changedAt(), DateTimeFormat::JSON))); } break; case TimelineOrderByTypes::CREATED: - if (!empty($status->createdAt())){ + if (!empty($status->createdAt())) { self::setBoundaries(new DateTime(DateTimeFormat::utc($status->createdAt(), DateTimeFormat::JSON))); } break; case TimelineOrderByTypes::COMMENTED: - if (!empty($status->friendicaExtension()->commentedAt())){ + if (!empty($status->friendicaExtension()->commentedAt())) { self::setBoundaries(new DateTime(DateTimeFormat::utc($status->friendicaExtension()->commentedAt(), DateTimeFormat::JSON))); } break; case TimelineOrderByTypes::EDITED: - if (!empty($status->friendicaExtension()->editedAt())){ - self::setBoundaries(new DateTime(DateTimeFormat::utc($status->friendicaExtension()->editedAt(), DateTimeFormat::JSON))); + if (!empty($status->editedAt())) { + self::setBoundaries(new DateTime(DateTimeFormat::utc($status->editedAt(), DateTimeFormat::JSON))); } break; case TimelineOrderByTypes::RECEIVED: - if (!empty($status->friendicaExtension()->receivedAt())){ + if (!empty($status->friendicaExtension()->receivedAt())) { self::setBoundaries(new DateTime(DateTimeFormat::utc($status->friendicaExtension()->receivedAt(), DateTimeFormat::JSON))); } break; @@ -269,7 +281,7 @@ class BaseApi extends BaseModule * Get the "link" header with "next" and "prev" links * @return string */ - protected static function getLinkHeader(bool $asDate): string + protected static function getLinkHeader(bool $asDate = false): string { if (empty(self::$boundaries)) { return '';