Add Platal::assert() function
[platal.git] / modules / core.php
index c60cfec..adbcf38 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2009 Polytechnique.org                              *
+ *  Copyright (C) 2003-2010 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -31,6 +31,7 @@ class CoreModule extends PLModule
             'purge_cache'   => $this->make_hook('purge_cache',   AUTH_COOKIE, 'admin'),
             'kill_sessions' => $this->make_hook('kill_sessions', AUTH_COOKIE, 'admin'),
             'sql_errors'    => $this->make_hook('sqlerror',      AUTH_COOKIE, 'admin'),
+            'assert_errors' => $this->make_hook('asserterror',      AUTH_COOKIE, 'admin'),
 
             'wiki_help'     => $this->make_hook('wiki_help',     AUTH_PUBLIC),
             'wiki_preview'  => $this->make_hook('wiki_preview',  AUTH_COOKIE, 'user', NO_AUTH),
@@ -74,9 +75,9 @@ class CoreModule extends PLModule
 
     function handler_favicon(&$page)
     {
-        $data = file_get_contents(dirname(__FILE__).'/../htdocs/images/favicon.ico');
-        header('Content-Type: image/x-icon');
-        echo $data;
+        global $globals;
+        pl_cached_content_headers("image/x-icon");
+        readfile($globals->spoolroot . '/htdocs/images/favicon.ico');
         exit;
     }
 
@@ -94,7 +95,7 @@ class CoreModule extends PLModule
         }
 
         if (count($disallowed_uris) > 0) {
-            header('Content-Type: text/plain');
+            pl_cached_content_headers("text/plain");
             echo "User-agent: *\n";
             foreach ($disallowed_uris as $uri) {
                 echo "Disallow: $uri\n";
@@ -170,7 +171,7 @@ class CoreModule extends PLModule
     /// Shared handler for wiki syntax result preview
     function handler_wiki_preview(&$page, $action = 'title')
     {
-        header('Content-Type: text/html; charset=utf-8');
+        pl_content_headers("text/html");
         $text = Env::v('text');
         echo MiniWiki::wikiToHtml($text, $action == 'title');
         exit;
@@ -179,16 +180,28 @@ class CoreModule extends PLModule
     function handler_sqlerror(&$page) {
         global $globals;
         $page->coreTpl('sql_errors.tpl');
-        $file = @fopen($globals->spoolroot . '/spool/tmp/query_errors', 'r');
+        $file = @file_get_contents($globals->spoolroot . '/spool/tmp/query_errors');
         if ($file !== false) {
-            $page->assign('errors', fpassthru($file));
-            fclose($file);
+            $page->assign('errors', utf8_encode($file));
         }
         if (Post::has('clear')) {
             @unlink($globals->spoolroot . '/spool/tmp/query_errors');
             $page->trigSuccess("Erreurs MySQL effacées.");
         }
     }
+
+    function handler_asserterror(&$page) {
+        global $globals;
+        $page->coreTpl('assert_errors.tpl');
+        $file = @file_get_contents($globals->spoolroot . '/spool/tmp/assert_errors');
+        if ($file !== false) {
+            $page->assign('errors', utf8_encode($file));
+        }
+        if (Post::has('clear')) {
+            @unlink($globals->spoolroot . '/spool/tmp/assert_errors');
+            $page->trigSuccess("Erreurs d'assertion effacées.");
+        }
+    }
 }
 
 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: