The buttonbar at the top of each page is now a fixed 'div' element
[gnucomo.git] / src / web / log.php
index 9fcfe34..346c58d 100644 (file)
@@ -9,7 +9,7 @@
 ***********************
 **      FILE NAME      : log.php
 **      SYSTEM NAME    : Gnucomo - Gnu Computer Monitoring
-**      VERSION NUMBER : $Revision: 1.3 $
+**      VERSION NUMBER : $Revision: 1.8 $
 **
 **  DESCRIPTION      : Logs page
 **
 ********************************
 **      ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
 **      CREATION DATE   : Dec 04, 2002
-**      LAST UPDATE     : Feb 16, 2003
+**      LAST UPDATE     : Jul 15, 2003
 **      MODIFICATIONS   : 
 **************************************************************************/
 
 /*****************************
    $Log: log.php,v $
-   Revision 1.3  2003-02-21 08:50:12  arjen
+   Revision 1.8  2007-11-21 14:38:06  arjen
+   The buttonbar at the top of each page is now a fixed 'div' element
+   instead of a framed page.
+   Contributed by Edwin Nadorp.
+
+   Revision 1.7  2007/10/27 08:38:18  arjen
+   Removed link to advanced log analysis
+
+   Revision 1.6  2005/06/04 07:18:26  arjen
+   Added a view for the log analysis with a link from the log page.
+
+   Revision 1.5  2003/08/11 17:59:17  arjen
+   BUGFIX: Convert special characters for HTML (<, >, and &) into
+   their entities.
+
+   Revision 1.4  2003/07/15 11:03:39  arjen
+   Show the log one day at a time.
+
+   Revision 1.3  2003/02/21 08:50:12  arjen
    Database optimizations.
 
    Revision 1.2  2003/02/13 09:01:29  arjen
@@ -38,7 +56,7 @@
 
 ******************************/
 
-// RCSID = "$Id: log.php,v 1.3 2003-02-21 08:50:12 arjen Exp $";
+// RCSID = "$Id: log.php,v 1.8 2007-11-21 14:38:06 arjen Exp $";
 
 ini_set('include_path', '.:./classes:../phpclasses');
 
@@ -52,25 +70,70 @@ class log_page extends page
    {
       if (!empty($_GET['oid']))
       {
-         $res = pg_exec($this->database, "SELECT objectname FROM object WHERE objectid=CAST'" . $_GET['oid']. "' AS BIGINT)");
+         $oid = $_GET['oid'];
+         $res = pg_exec($this->database, "SELECT objectname FROM object
+                               WHERE objectid=CAST('$oid' AS BIGINT)");
          $obj = pg_fetch_object($res, 0);
-         echo "<h1>Log for " . $obj->objectname . "</h1><hr>";
+         echo "<script type='text/ecmascript'>
+               document.getElementById('menu_title').innerHTML = \"<h1>Log for "
+                . $obj->objectname . "<\/h1>\"
+               </script>";
+
+         //  Determine which day to display.
+         //  This is either from a previous button though a _POST[] variable
+         //  or the last day in the log table by default.
+
+         if (empty($_GET['logday']))
+         {
+            $res = pg_exec($this->database, "SELECT date_trunc('day',object_timestamp) FROM log
+                                  WHERE objectid='$oid'
+                                  ORDER BY object_timestamp DESC LIMIT 1");
+
+            if( pg_num_rows($res) > 0 )
+            {
+               $last_time = pg_fetch_object($res, 0);
+               $logday = strtotime($last_time->date_trunc);
+            }
+            else
+            {
+               $logday = "";
+            }
+         }
+         else
+         {
+            $logday = $_GET['logday'];
+         }
+
+         //  Make buttons to request the previous and the next day of logs.
+
+         echo "<div id=\"log_date\">";
+         $logday1 = $logday - 24 * 60 * 60;
+         echo "<a href=\"log.php?oid=$oid&amp;logday=$logday1\" title=\"previous day\">&lt;&lt;</a>";
+         echo "&nbsp;" . date('F d, Y', $logday) . "&nbsp;";
+         $logday2 = $logday + 24 * 60 * 60;
+         echo "<a href=\"log.php?oid=$oid&amp;logday=$logday2\" title=\"next day\">&gt;&gt;</a>";
+         echo "</div>";
+
+         // Show the log for one day only.
 
-         $res = pg_exec($this->database, "SELECT object_timestamp, servicecode, rawdata FROM log "
-                        ."WHERE objectid = CAST('" . $_GET['oid'] . "' AS BIGINT) ");
+         $res = pg_exec($this->database, "SELECT logid, object_timestamp, servicecode, rawdata FROM log "
+                        ."WHERE objectid = CAST('$oid' AS BIGINT)
+                         AND date_trunc('day', object_timestamp)='" . date('Y-m-d', $logday) . "'
+                         ORDER BY object_timestamp, logid");
 
-         echo "<table>";
+         echo "<table>\n";
+         echo "<tr><th>Date</th><th>Service</th><th>Log</th></tr>\n";
          $row = 0;
          while ($row < pg_numrows($res))
          {
             $log = pg_fetch_object($res, $row);
             ?>
             <tr><td class='time'>
-               <?php echo $log->object_timestamp?>
+                 <?php echo $log->object_timestamp?>
             </td><td>
                <?php echo $log->servicecode?>
             </td><td>
-               <?php echo $log->rawdata?>
+               <?php echo htmlentities($log->rawdata)?>
             </td></tr>
             <?php
             $row++;