OSDN Git Service

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