Send 404 if a note cannot be found
[grauphel.git] / controller / guicontroller.php
index 6fffcb2f7377db128d076d395e94d10156661c5b..8ebea8c58f5b8900e4dfeb7a14cc97ed1e079f13 100644 (file)
@@ -59,7 +59,18 @@ class GuiController extends Controller
      */
     public function index()
     {
-        $this->checkDeps();
+        try {
+            $this->checkDeps();
+        } catch (\Exception $e) {
+            $res = new TemplateResponse('grauphel', 'error');
+            $res->setParams(
+                array(
+                    'message' => $e->getMessage(),
+                    'code' => $e->getCode(),
+                )
+            );
+            return $res;
+        }
 
         $res = new TemplateResponse('grauphel', 'index');
         $res->setParams(
@@ -85,7 +96,9 @@ class GuiController extends Controller
 
         $note = $this->getNotes()->load($guid, false);
         if ($note === null) {
-            return new ErrorResponse('Note does not exist');
+            $res = new ErrorResponse('Note does not exist');
+            $res->setStatus(\OCP\AppFramework\Http::STATUS_NOT_FOUND);
+            return $res;
         }
 
         $converter = new \OCA\Grauphel\Converter\Html();
@@ -157,6 +170,17 @@ class GuiController extends Controller
             }
         );
 
+        foreach ($notes as &$note) {
+            $diffInDays = intval(
+                (time() - strtotime($note['last-change-date'])) / 86400
+            );
+            $value = 0 + $diffInDays;
+            if ($value > 160) {
+                $value = 160;
+            }
+            $note['dateColor'] = '#' . str_repeat(sprintf('%02X', $value), 3);
+        }
+
         $res = new TemplateResponse('grauphel', 'tag');
         $res->setParams(
             array(
@@ -290,7 +314,7 @@ class GuiController extends Controller
     protected function checkDeps()
     {
         if (!class_exists('OAuthProvider')) {
-            throw new \Exception('PHP extension "oauth" is required');
+            throw new \Exception('PHP extension "oauth" is required', 1001);
         }
     }