X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=application%2Fapi%2Fcontrollers%2FLinks.php;h=3a9c03553a30fbe5247e48a2a6c30eb4f34e7b51;hb=d2d4f993e1e76bc68b65c48cb18476c404c97a41;hp=1c68b0620a3eb919734106720e0577142a06ae42;hpb=cf9181dddf8b6113b1b017e4bcb21fac0a0b1c83;p=github%2Fshaarli%2FShaarli.git diff --git a/application/api/controllers/Links.php b/application/api/controllers/Links.php index 1c68b062..3a9c0355 100644 --- a/application/api/controllers/Links.php +++ b/application/api/controllers/Links.php @@ -59,9 +59,9 @@ class Links extends ApiController $limit = $request->getParam('limit'); if (empty($limit)) { $limit = self::$DEFAULT_LIMIT; - } else if (ctype_digit($limit)) { + } elseif (ctype_digit($limit)) { $limit = intval($limit); - } else if ($limit === 'all') { + } elseif ($limit === 'all') { $limit = count($links); } else { throw new ApiBadParametersException('Invalid limit'); @@ -141,6 +141,7 @@ class Links extends ApiController $this->linkDb[$link['id']] = $link; $this->linkDb->save($this->conf->get('resource.page_cache')); + $this->history->addLink($link); $out = ApiUtils::formatLink($link, index_url($this->ci['environment'])); $redirect = $this->ci->router->relativePathFor('getLink', ['id' => $link['id']]); return $response->withAddedHeader('Location', $redirect) @@ -184,8 +185,33 @@ class Links extends ApiController $responseLink = ApiUtils::updateLink($responseLink, $requestLink); $this->linkDb[$responseLink['id']] = $responseLink; $this->linkDb->save($this->conf->get('resource.page_cache')); + $this->history->updateLink($responseLink); $out = ApiUtils::formatLink($responseLink, $index); return $response->withJson($out, 200, $this->jsonStyle); } + + /** + * Delete an existing link by its ID. + * + * @param Request $request Slim request. + * @param Response $response Slim response. + * @param array $args Path parameters. including the ID. + * + * @return Response response. + * + * @throws ApiLinkNotFoundException generating a 404 error. + */ + public function deleteLink($request, $response, $args) + { + if (! isset($this->linkDb[$args['id']])) { + throw new ApiLinkNotFoundException(); + } + $link = $this->linkDb[$args['id']]; + unset($this->linkDb[(int) $args['id']]); + $this->linkDb->save($this->conf->get('resource.page_cache')); + $this->history->deleteLink($link); + + return $response->withStatus(204); + } }