Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
/*************************************************************************
class.sys.php
System core helper.
Peter Rotich <peter@osticket.com>
Copyright (c) 2006-2012 osTicket
http://www.osticket.com
Released under the GNU General Public License WITHOUT ANY WARRANTY.
See LICENSE.TXT for details.
vim: expandtab sw=4 ts=4 sts=4:
**********************************************************************/
require_once(INCLUDE_DIR.'class.config.php'); //Config helper
define('LOG_WARN',LOG_WARNING);
class Sys {
var $loglevel=array(1=>'Error','Warning','Debug');
//Load configuration info.
function getConfig() {
$cfg= new Config(1);
return ($cfg && $cfg->getId())?$cfg:null;
}
function alertAdmin($subject,$message,$log=false) {
global $cfg;
//Set admin's email address
if(!$cfg || !($to=$cfg->getAdminEmail()))
$to=ADMIN_EMAIL;
//Try getting the alert email.
$email=null;
if($cfg && !($email=$cfg->getAlertEmail()))
$email=$cfg->getDefaultEmail(); //will take the default email.
if($email) {
$email->send($to,$subject,$message);
}else {//no luck - try the system mail.
Email::sendmail($to,$subject,$message,sprintf('"osTicket Alerts"<%s>',$to));
}
//log the alert? Watch out for loops here.
if($log && is_object($cfg)) { //if $cfg is not set then it means we don't have DB connection.
Sys::log(LOG_CRIT,$subject,$message,false); //Log the entry...and make sure no alerts are resent.
}
}
function log($priority,$title,$message,$alert=true) {
global $cfg;
switch($priority){ //We are providing only 3 levels of logs. Windows style.
case LOG_EMERG:
case LOG_ALERT:
case LOG_CRIT:
case LOG_ERR:
$level=1;
if($alert) {
Sys::alertAdmin($title,$message);
}
break;
case LOG_WARN:
case LOG_WARNING:
//Warning...
$level=2;
break;
case LOG_NOTICE:
case LOG_INFO:
case LOG_DEBUG:
default:
$level=3;
//debug
}
//Save log based on system log level settings.
if($cfg && $cfg->getLogLevel()>=$level){
$loglevel=array(1=>'Error','Warning','Debug');
$sql='INSERT INTO '.SYSLOG_TABLE.' SET created=NOW(),updated=NOW() '.
',title='.db_input($title).
',log_type='.db_input($loglevel[$level]).
',log='.db_input($message).
',ip_address='.db_input($_SERVER['REMOTE_ADDR']);
//echo $sql;
mysql_query($sql); //don't use db_query to avoid possible loop.
}
}
function purgeLogs(){
global $cfg;
if($cfg && ($gp=$cfg->getLogGracePeriod()) && is_numeric($gp)) {
$sql='DELETE FROM '.SYSLOG_TABLE.' WHERE DATE_ADD(created, INTERVAL '.$gp.' MONTH)<=NOW()';
db_query($sql);
}
}
}
?>