]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - application/api/controllers/Links.php
Merge pull request #1175 from ArthurHoaro/docs/apache-proxy-preserve-host
[github/shaarli/Shaarli.git] / application / api / controllers / Links.php
index 1c68b0620a3eb919734106720e0577142a06ae42..ffcfd4c75a4f8748101675247a138c083bd1dd27 100644 (file)
@@ -59,25 +59,25 @@ 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');
         }
 
         // 'environment' is set by Slim and encapsulate $_SERVER.
-        $index = index_url($this->ci['environment']);
+        $indexUrl = index_url($this->ci['environment']);
 
         $out = [];
-        $cpt = 0;
+        $index = 0;
         foreach ($links as $link) {
             if (count($out) >= $limit) {
                 break;
             }
-            if ($cpt++ >= $offset) {
-                $out[] = ApiUtils::formatLink($link, $index);
+            if ($index++ >= $offset) {
+                $out[] = ApiUtils::formatLink($link, $indexUrl);
             }
         }
 
@@ -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);
+    }
 }