. */ namespace SP\Modules\Web\Controllers\Status; use SP\Core\AppInfoInterface; use SP\Core\Exceptions\CheckException; use SP\Http\JsonResponse; use SP\Modules\Web\Controllers\Traits\JsonTrait; use Throwable; /** * Class CheckNotices */ final class CheckNotices extends StatusBase { use JsonTrait; /** * checkNoticesAction * * @return bool * @throws \JsonException */ public function checkNoticesAction(): bool { try { $this->extensionChecker->checkCurlAvailable(true); $request = $this->client->request('GET', AppInfoInterface::APP_NOTICES_URL); if ($request->getStatusCode() === 200 && strpos($request->getHeaderLine('content-type'), 'application/json') !== false ) { $requestData = json_decode($request->getBody(), false, 512, JSON_THROW_ON_ERROR); if ($requestData !== null && !isset($requestData->message)) { $notices = []; foreach ($requestData as $notice) { $notices[] = [ 'title' => $notice->title, 'date' => $notice->created_at, 'text' => $notice->body, ]; } return $this->returnJsonResponseData($notices); } logger($requestData->message); } return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('Notifications not available')); } catch (CheckException $e) { return $this->returnJsonResponseException($e); } catch (Throwable $e) { processException($e); return $this->returnJsonResponseException($e); } } }