404s now raise notFound exceptions
[dylansserver.git] / includes / cms.php
index cb414e2..0f23b80 100644 (file)
@@ -16,6 +16,7 @@ abstract class cms {
          echo mysqli_connect_error();
          exit();
        }
+       ob_start();
   }
 
   public static function determine_type() {
@@ -30,12 +31,6 @@ abstract class cms {
        }
   }
 
-  protected function not_found() {
-    header("HTTP/1.0 404 Not Found");
-       include("404.php");
-       exit();
-  }
-
   public function query() {
     $args = func_get_args();
        $statement = $this->db->prepare($args[0]);
@@ -111,6 +106,7 @@ END_OF_HEAD;
 </body>
 </html>
 END_OF_CLOSE;
+  ob_flush();
   }
 
 }
@@ -196,7 +192,7 @@ class project extends index {
            echo $text;
            echo "</div>";
          } else {
-           $this->not_found();
+           throw new notFound();
          }
        }
 }
@@ -220,13 +216,13 @@ class page extends cms {
        if (isset($_GET['page']) && is_numeric($_GET['page'])) {
          $this->page = (int) $_GET['page'];
        } else {
-         $this->not_found();
+         throw new notFound();
        }
        if ($this->page > $this->number_of_pages) {
-         $this->not_found();
+         throw new notFound();
        }
        if ($this->page < 1) {
-         $this->not_found();
+         throw new notFound();
        }
        $this->offset = ($this->page - 1) * $this->notes_per_page;
   }
@@ -287,7 +283,7 @@ class note extends cms {
                          WHERE url = ?";
        $results = $this->query($sql, "s", $_GET['note']);
        if ($results[0]["COUNT(*)"] != 1) {
-         $this->not_found();
+         throw new notFound();
        }
   }
 
@@ -321,6 +317,15 @@ class note extends cms {
   }
 }
 
+class notFound extends Exception {
+       public function __construct() {
+      header("HTTP/1.0 404 Not Found");
+         ob_end_clean();
+         include("404.php");
+         exit();
+       }
+}
+
 ## now actually do something:
 switch (cms::determine_type()) {
   case "index":