OSDN Git Service

3.15 taka-san version
[nucleus-jp/nucleus-jp-ancient.git] / utf8 / nucleus / libs / ACTIONLOG.php
1 <?php\r
2 /**\r
3   * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) \r
4   * Copyright (C) 2002-2004 The Nucleus Group\r
5   *\r
6   * This program is free software; you can redistribute it and/or\r
7   * modify it under the terms of the GNU General Public License\r
8   * as published by the Free Software Foundation; either version 2\r
9   * of the License, or (at your option) any later version.\r
10   * (see nucleus/documentation/index.html#license for more info)\r
11   *\r
12   * Actionlog class for Nucleus\r
13   */\r
14 define('ERROR',1);              // only errors\r
15 define('WARNING',2);    // errors and warnings\r
16 define('INFO',3);               // info, errors and warnings\r
17 define('DEBUG',4);              // everything \r
18 $CONF['LogLevel'] = INFO;\r
19 \r
20 class ACTIONLOG {\r
21 \r
22         /**\r
23           * (Static) Method to add message to log\r
24           */\r
25         function add($level, $message) {\r
26                 global $member, $CONF;\r
27                 \r
28                 if ($CONF['LogLevel'] < $level)\r
29                         return;\r
30                 \r
31                 if ($member && $member->isLoggedIn())\r
32                         $message = "[" . $member->getDisplayName() . "] " . $message;\r
33                 \r
34                 $message = addslashes($message);                // add slashes\r
35                 $timestamp = date("Y-m-d H:i:s",time());        // format timestamp\r
36                 $query = "INSERT INTO " . sql_table('actionlog') . " (timestamp, message) VALUES ('$timestamp', '$message')";\r
37                 \r
38                 sql_query($query);\r
39                 \r
40                 ACTIONLOG::trimLog();\r
41         }\r
42         \r
43         /**\r
44           * (Static) Method to clear log\r
45           */\r
46         function clear() {\r
47                 global $manager;\r
48                 \r
49                 $query = 'DELETE FROM ' . sql_table('actionlog');\r
50 \r
51                 $manager->notify('ActionLogCleared',array());\r
52                 \r
53                 return sql_query($query);\r
54         }\r
55         \r
56         function trimLog() {\r
57                 static $checked = 0;\r
58                 \r
59                 // only check once per run\r
60                 if ($checked) return;\r
61                 \r
62                 // trim\r
63                 $checked = 1;\r
64                 \r
65                 $iTotal = quickQuery('SELECT COUNT(*) AS result FROM ' . sql_table('actionlog'));\r
66                 \r
67                 // if size > 500, drop back to about 250\r
68                 $iMaxSize = 500;\r
69                 $iDropSize = 250;\r
70                 if ($iTotal > $iMaxSize) {\r
71                         $tsChop = quickQuery('SELECT timestamp as result FROM ' . sql_table('actionlog') . ' ORDER BY timestamp DESC LIMIT '.$iDropSize.',1');\r
72                         sql_query('DELETE FROM ' . sql_table('actionlog') . ' WHERE timestamp < \'' . $tsChop . '\'');\r
73                 }\r
74                 \r
75         }\r
76 \r
77 }\r
78 \r
79 ?>