diff --git a/api/api.inc.php b/api/api.inc.php index d209860d5c60bff7d55c3032144ea675b4de6767..926a0e2a9ddb4b0464c5f1385e56665312339d8e 100644 --- a/api/api.inc.php +++ b/api/api.inc.php @@ -36,13 +36,13 @@ define('OSTAPIINC',TRUE); // Define tag that included files can check $remotehost=(isset($_SERVER['HTTP_HOST']) || isset($_SERVER['REMOTE_ADDR']))?TRUE:FALSE; /* API exit helper */ function api_exit($code,$msg='') { - global $remotehost,$cfg; + global $remotehost, $ost; if($code!=EX_SUCCESS) { //Error occured... $_SESSION['api']['errors']+=1; $_SESSION['api']['time']=time(); - Sys::log(LOG_WARNING,"API error - code #$code",$msg); + $ost->logWarning("API error - code #$code",$msg); //echo "API Error:.$msg"; } if($remotehost){ diff --git a/api/cron.php b/api/cron.php index 86de02cdb6e32a4f3f61e5fc87a2567133694f82..a8874e3b7eb45eb246145e756db8f85c91c1e47a 100644 --- a/api/cron.php +++ b/api/cron.php @@ -17,5 +17,5 @@ require('api.inc.php'); require_once(INCLUDE_DIR.'class.cron.php'); Cron::run(); -Sys::log(LOG_DEBUG,'Cron Job','External cron job executed ['.$_SERVER['REMOTE_ADDR'].']'); +$ost->logDebug('Cron Job','External cron job executed ['.$_SERVER['REMOTE_ADDR'].']'); ?> diff --git a/client.inc.php b/client.inc.php index 3b450e9e2491653ec44c65f346ef79758cc1d1a8..1908eaa1b5d5172fffaccfbee69f6f17e4871d1e 100644 --- a/client.inc.php +++ b/client.inc.php @@ -29,7 +29,7 @@ define('OSTCLIENTINC',TRUE); define('ASSETS_PATH',ROOT_PATH.'assets/default/'); //Check the status of the HelpDesk. -if(!is_object($cfg) || !$cfg->getId() || $cfg->isHelpDeskOffline() || $cfg->isUpgradePending()) { +if(!is_object($ost) || !$ost->isSystemOnline()) { include('./offline.php'); exit; } diff --git a/include/class.config.php b/include/class.config.php index 626e11c9a0e3eb466046f3539b9ed16ecb7c0c7e..cb7cd40aed575013ee1db136d15037438d6b34fb 100644 --- a/include/class.config.php +++ b/include/class.config.php @@ -44,39 +44,28 @@ class Config { $this->config=db_fetch_array($res); $this->id=$this->config['id']; + $this->setMysqlTZ(db_timezone()); return true; } - //Initialize some default values. - function init() { - list($mysqltz)=db_fetch_row(db_query('SELECT @@session.time_zone ')); - $this->setMysqlTZ($mysqltz); - } - function reload() { if(!$this->load($this->getId())) return false; - $this->init(); - return true; } function isHelpDeskOffline() { - return !$this->isSystemOnline(); + return !$this->isOnline(); } function isHelpDeskOnline() { - return $this->isSystemOnline(); + return $this->isOnline(); } - function isSystemOnline() { - return ($this->config['isonline'] && !$this->isUpgradePending()); - } - - function isUpgradePending() { - return (defined('SCHEMA_SIGNATURE') && strcasecmp($this->getSchemaSignature(), SCHEMA_SIGNATURE)); + function isOnline() { + return ($this->config['isonline']); } function isKnowledgebaseEnabled() { @@ -132,6 +121,14 @@ class Config { function getId() { return $this->id; } + + function getConfigId() { + return $this->getId(); + } + + function getConfigInfo() { + return $this->config; + } function getTitle() { return $this->config['helpdesk_title']; @@ -145,10 +142,6 @@ class Config { return rtrim($this->getUrl(),'/'); } - function getConfig() { - return $this->config; - } - function getTZOffset() { return $this->config['timezone_offset']; } @@ -584,7 +577,7 @@ class Config { return false; } - function updateGeneralSetting($vars,&$errors) { + function updateGeneralSetting($vars, &$errors) { $f=array(); $f['helpdesk_url']=array('type'=>'string', 'required'=>1, 'error'=>'Helpdesk URl required'); @@ -594,29 +587,29 @@ class Config { $f['staff_session_timeout']=array('type'=>'int', 'required'=>1, 'error'=>'Enter idle time in minutes'); $f['client_session_timeout']=array('type'=>'int', 'required'=>1, 'error'=>'Enter idle time in minutes'); - if(!Validator::process($f,$vars,$errors) || $errors) + if(!Validator::process($f, $vars, $errors) || $errors) return false; - $sql='UPDATE '.CONFIG_TABLE.' SET updated=NOW() '. - ',isonline='.db_input($vars['isonline']). - ',helpdesk_title='.db_input($vars['helpdesk_title']). - ',helpdesk_url='.db_input($vars['helpdesk_url']). - ',default_dept_id='.db_input($vars['default_dept_id']). - ',default_template_id='.db_input($vars['default_template_id']). - ',max_page_size='.db_input($vars['max_page_size']). - ',log_level='.db_input($vars['log_level']). - ',log_graceperiod='.db_input($vars['log_graceperiod']). - ',passwd_reset_period='.db_input($vars['passwd_reset_period']). - ',staff_max_logins='.db_input($vars['staff_max_logins']). - ',staff_login_timeout='.db_input($vars['staff_login_timeout']). - ',staff_session_timeout='.db_input($vars['staff_session_timeout']). - ',staff_ip_binding='.db_input(isset($vars['staff_ip_binding'])?1:0). - ',client_max_logins='.db_input($vars['client_max_logins']). - ',client_login_timeout='.db_input($vars['client_login_timeout']). - ',client_session_timeout='.db_input($vars['client_session_timeout']). - ',clickable_urls='.db_input(isset($vars['clickable_urls'])?1:0). - ',enable_auto_cron='.db_input(isset($vars['enable_auto_cron'])?1:0). - ' WHERE id='.$this->getId(); + $sql='UPDATE '.CONFIG_TABLE.' SET updated=NOW() ' + .',isonline='.db_input($vars['isonline']) + .',helpdesk_title='.db_input($vars['helpdesk_title']) + .',helpdesk_url='.db_input($vars['helpdesk_url']) + .',default_dept_id='.db_input($vars['default_dept_id']) + .',default_template_id='.db_input($vars['default_template_id']) + .',max_page_size='.db_input($vars['max_page_size']) + .',log_level='.db_input($vars['log_level']) + .',log_graceperiod='.db_input($vars['log_graceperiod']) + .',passwd_reset_period='.db_input($vars['passwd_reset_period']) + .',staff_max_logins='.db_input($vars['staff_max_logins']) + .',staff_login_timeout='.db_input($vars['staff_login_timeout']) + .',staff_session_timeout='.db_input($vars['staff_session_timeout']) + .',staff_ip_binding='.db_input(isset($vars['staff_ip_binding'])?1:0) + .',client_max_logins='.db_input($vars['client_max_logins']) + .',client_login_timeout='.db_input($vars['client_login_timeout']) + .',client_session_timeout='.db_input($vars['client_session_timeout']) + .',clickable_urls='.db_input(isset($vars['clickable_urls'])?1:0) + .',enable_auto_cron='.db_input(isset($vars['enable_auto_cron'])?1:0) + .' WHERE id='.db_input($this->getId()); return (db_query($sql)); } @@ -633,14 +626,14 @@ class Config { if(!Validator::process($f,$vars,$errors) || $errors) return false; - $sql='UPDATE '.CONFIG_TABLE.' SET updated=NOW() '. - ',time_format='.db_input($vars['time_format']). - ',date_format='.db_input($vars['date_format']). - ',datetime_format='.db_input($vars['datetime_format']). - ',daydatetime_format='.db_input($vars['daydatetime_format']). - ',default_timezone_id='.db_input($vars['default_timezone_id']). - ',enable_daylight_saving='.db_input(isset($vars['enable_daylight_saving'])?1:0). - ' WHERE id='.$this->getId(); + $sql='UPDATE '.CONFIG_TABLE.' SET updated=NOW() ' + .',time_format='.db_input($vars['time_format']) + .',date_format='.db_input($vars['date_format']) + .',datetime_format='.db_input($vars['datetime_format']) + .',daydatetime_format='.db_input($vars['daydatetime_format']) + .',default_timezone_id='.db_input($vars['default_timezone_id']) + .',enable_daylight_saving='.db_input(isset($vars['enable_daylight_saving'])?1:0) + .' WHERE id='.db_input($this->getId()); return (db_query($sql)); } @@ -665,22 +658,23 @@ class Config { if(!Validator::process($f,$vars,$errors) || $errors) return false; - $sql='UPDATE '.CONFIG_TABLE.' SET updated=NOW() '. - ',random_ticket_ids='.db_input($vars['random_ticket_ids']). - ',default_priority_id='.db_input($vars['default_priority_id']). - ',default_sla_id='.db_input($vars['default_sla_id']). - ',max_open_tickets='.db_input($vars['max_open_tickets']). - ',autolock_minutes='.db_input($vars['autolock_minutes']). - ',allow_priority_change='.db_input(isset($vars['allow_priority_change'])?1:0). - ',use_email_priority='.db_input(isset($vars['use_email_priority'])?1:0). - ',enable_captcha='.db_input(isset($vars['enable_captcha'])?1:0). - ',log_ticket_activity='.db_input(isset($vars['log_ticket_activity'])?1:0). - ',auto_assign_reopened_tickets='.db_input(isset($vars['auto_assign_reopened_tickets'])?1:0). - ',show_assigned_tickets='.db_input(isset($vars['show_assigned_tickets'])?1:0). - ',show_answered_tickets='.db_input(isset($vars['show_answered_tickets'])?1:0). - ',show_related_tickets='.db_input(isset($vars['show_related_tickets'])?1:0). - ',show_notes_inline='.db_input(isset($vars['show_notes_inline'])?1:0). - ',hide_staff_name='.db_input(isset($vars['hide_staff_name'])?1:0); + $sql='UPDATE '.CONFIG_TABLE.' SET updated=NOW() ' + .',random_ticket_ids='.db_input($vars['random_ticket_ids']) + .',default_priority_id='.db_input($vars['default_priority_id']) + .',default_sla_id='.db_input($vars['default_sla_id']) + .',max_open_tickets='.db_input($vars['max_open_tickets']) + .',autolock_minutes='.db_input($vars['autolock_minutes']) + .',allow_priority_change='.db_input(isset($vars['allow_priority_change'])?1:0) + .',use_email_priority='.db_input(isset($vars['use_email_priority'])?1:0) + .',enable_captcha='.db_input(isset($vars['enable_captcha'])?1:0) + .',log_ticket_activity='.db_input(isset($vars['log_ticket_activity'])?1:0) + .',auto_assign_reopened_tickets='.db_input(isset($vars['auto_assign_reopened_tickets'])?1:0) + .',show_assigned_tickets='.db_input(isset($vars['show_assigned_tickets'])?1:0) + .',show_answered_tickets='.db_input(isset($vars['show_answered_tickets'])?1:0) + .',show_related_tickets='.db_input(isset($vars['show_related_tickets'])?1:0) + .',show_notes_inline='.db_input(isset($vars['show_notes_inline'])?1:0) + .',hide_staff_name='.db_input(isset($vars['hide_staff_name'])?1:0) + .' WHERE id='.db_input($this->getId()); return (db_query($sql)); } @@ -702,15 +696,18 @@ class Config { if(!Validator::process($f,$vars,$errors) || $errors) return false; - $sql='UPDATE '.CONFIG_TABLE.' SET updated=NOW() '. - ',default_email_id='.db_input($vars['default_email_id']). - ',alert_email_id='.db_input($vars['alert_email_id']). - ',default_smtp_id='.db_input($vars['default_smtp_id']). - ',admin_email='.db_input($vars['admin_email']). - ',enable_mail_polling='.db_input(isset($vars['enable_mail_polling'])?1:0). - ',enable_email_piping='.db_input(isset($vars['enable_email_piping'])?1:0). - ',strip_quoted_reply='.db_input(isset($vars['strip_quoted_reply'])?1:0). - ',reply_separator='.db_input($vars['reply_separator']); + $sql='UPDATE '.CONFIG_TABLE.' SET updated=NOW() ' + .',default_email_id='.db_input($vars['default_email_id']) + .',alert_email_id='.db_input($vars['alert_email_id']) + .',default_smtp_id='.db_input($vars['default_smtp_id']) + .',admin_email='.db_input($vars['admin_email']) + .',enable_mail_polling='.db_input(isset($vars['enable_mail_polling'])?1:0) + .',enable_email_piping='.db_input(isset($vars['enable_email_piping'])?1:0) + .',strip_quoted_reply='.db_input(isset($vars['strip_quoted_reply'])?1:0) + .',reply_separator='.db_input($vars['reply_separator']) + .' WHERE id='.db_input($this->getId()); + + return (db_query($sql)); } @@ -741,36 +738,33 @@ class Config { if($errors) return false; - $sql= 'UPDATE '.CONFIG_TABLE.' SET updated=NOW() '. - ',allow_attachments='.db_input(isset($vars['allow_attachments'])?1:0). - ',allowed_filetypes='.db_input(strtolower(preg_replace("/\n\r|\r\n|\n|\r/", '',trim($vars['allowed_filetypes'])))). - ',max_file_size='.db_input($vars['max_file_size']). - ',max_user_file_uploads='.db_input($vars['max_user_file_uploads']). - ',max_staff_file_uploads='.db_input($vars['max_staff_file_uploads']). - ',email_attachments='.db_input(isset($vars['email_attachments'])?1:0). - ',allow_email_attachments='.db_input(isset($vars['allow_email_attachments'])?1:0). - ',allow_online_attachments='.db_input(isset($vars['allow_online_attachments'])?1:0). - ',allow_online_attachments_onlogin='.db_input(isset($vars['allow_online_attachments_onlogin'])?1:0). - ' WHERE id='.db_input($this->getId()); - + $sql= 'UPDATE '.CONFIG_TABLE.' SET updated=NOW() ' + .',allow_attachments='.db_input(isset($vars['allow_attachments'])?1:0) + .',allowed_filetypes='.db_input(strtolower(preg_replace("/\n\r|\r\n|\n|\r/", '',trim($vars['allowed_filetypes'])))) + .',max_file_size='.db_input($vars['max_file_size']) + .',max_user_file_uploads='.db_input($vars['max_user_file_uploads']) + .',max_staff_file_uploads='.db_input($vars['max_staff_file_uploads']) + .',email_attachments='.db_input(isset($vars['email_attachments'])?1:0) + .',allow_email_attachments='.db_input(isset($vars['allow_email_attachments'])?1:0) + .',allow_online_attachments='.db_input(isset($vars['allow_online_attachments'])?1:0) + .',allow_online_attachments_onlogin='.db_input(isset($vars['allow_online_attachments_onlogin'])?1:0) + .' WHERE id='.db_input($this->getId()); return (db_query($sql)); - } - function updateAutoresponderSetting($vars,&$errors) { if($errors) return false; - $sql= 'UPDATE '.CONFIG_TABLE.' SET updated=NOW() '. - ',ticket_autoresponder='.db_input($vars['ticket_autoresponder']). - ',message_autoresponder='.db_input($vars['message_autoresponder']). - ',ticket_notice_active='.db_input($vars['ticket_notice_active']). - ',overlimit_notice_active='.db_input($vars['overlimit_notice_active']); + $sql ='UPDATE '.CONFIG_TABLE.' SET updated=NOW() ' + .',ticket_autoresponder='.db_input($vars['ticket_autoresponder']) + .',message_autoresponder='.db_input($vars['message_autoresponder']) + .',ticket_notice_active='.db_input($vars['ticket_notice_active']) + .',overlimit_notice_active='.db_input($vars['overlimit_notice_active']) + .' WHERE id='.db_input($this->getId()); return (db_query($sql)); - } @@ -778,10 +772,11 @@ class Config { if($errors) return false; - $sql= 'UPDATE '.CONFIG_TABLE.' SET updated=NOW() '. - ',enable_kb='.db_input(isset($vars['enable_kb'])?1:0). - ',enable_premade='.db_input(isset($vars['enable_premade'])?1:0); - + $sql = 'UPDATE '.CONFIG_TABLE.' SET updated=NOW() ' + .',enable_kb='.db_input(isset($vars['enable_kb'])?1:0) + .',enable_premade='.db_input(isset($vars['enable_premade'])?1:0) + .' WHERE id='.db_input($this->getId()); + return (db_query($sql)); } @@ -832,38 +827,44 @@ class Config { if($errors) return false; - $sql= 'UPDATE '.CONFIG_TABLE.' SET updated=NOW() '. - ',ticket_notice_active='.db_input($vars['ticket_notice_active']). - ',ticket_alert_active='.db_input($vars['ticket_alert_active']). - ',ticket_alert_admin='.db_input(isset($vars['ticket_alert_admin'])?1:0). - ',ticket_alert_dept_manager='.db_input(isset($vars['ticket_alert_dept_manager'])?1:0). - ',ticket_alert_dept_members='.db_input(isset($vars['ticket_alert_dept_members'])?1:0). - ',message_alert_active='.db_input($vars['message_alert_active']). - ',message_alert_laststaff='.db_input(isset($vars['message_alert_laststaff'])?1:0). - ',message_alert_assigned='.db_input(isset($vars['message_alert_assigned'])?1:0). - ',message_alert_dept_manager='.db_input(isset($vars['message_alert_dept_manager'])?1:0). - ',note_alert_active='.db_input($vars['note_alert_active']). - ',note_alert_laststaff='.db_input(isset($vars['note_alert_laststaff'])?1:0). - ',note_alert_assigned='.db_input(isset($vars['note_alert_assigned'])?1:0). - ',note_alert_dept_manager='.db_input(isset($vars['note_alert_dept_manager'])?1:0). - ',assigned_alert_active='.db_input($vars['assigned_alert_active']). - ',assigned_alert_staff='.db_input(isset($vars['assigned_alert_staff'])?1:0). - ',assigned_alert_team_lead='.db_input(isset($vars['assigned_alert_team_lead'])?1:0). - ',assigned_alert_team_members='.db_input(isset($vars['assigned_alert_team_members'])?1:0). - ',transfer_alert_active='.db_input($vars['transfer_alert_active']). - ',transfer_alert_assigned='.db_input(isset($vars['transfer_alert_assigned'])?1:0). - ',transfer_alert_dept_manager='.db_input(isset($vars['transfer_alert_dept_manager'])?1:0). - ',transfer_alert_dept_members='.db_input(isset($var['transfer_alert_dept_members'])?1:0). - ',overdue_alert_active='.db_input($vars['overdue_alert_active']). - ',overdue_alert_assigned='.db_input(isset($vars['overdue_alert_assigned'])?1:0). - ',overdue_alert_dept_manager='.db_input(isset($vars['overdue_alert_dept_manager'])?1:0). - ',overdue_alert_dept_members='.db_input(isset($var['overdue_alert_dept_members'])?1:0). - ',send_sys_errors='.db_input(isset($vars['send_sys_errors'])?1:0). - ',send_sql_errors='.db_input(isset($vars['send_sql_errors'])?1:0). - ',send_login_errors='.db_input(isset($vars['send_login_errors'])?1:0); + $sql= 'UPDATE '.CONFIG_TABLE.' SET updated=NOW() ' + .',ticket_notice_active='.db_input($vars['ticket_notice_active']) + .',ticket_alert_active='.db_input($vars['ticket_alert_active']) + .',ticket_alert_admin='.db_input(isset($vars['ticket_alert_admin'])?1:0) + .',ticket_alert_dept_manager='.db_input(isset($vars['ticket_alert_dept_manager'])?1:0) + .',ticket_alert_dept_members='.db_input(isset($vars['ticket_alert_dept_members'])?1:0) + .',message_alert_active='.db_input($vars['message_alert_active']) + .',message_alert_laststaff='.db_input(isset($vars['message_alert_laststaff'])?1:0) + .',message_alert_assigned='.db_input(isset($vars['message_alert_assigned'])?1:0) + .',message_alert_dept_manager='.db_input(isset($vars['message_alert_dept_manager'])?1:0) + .',note_alert_active='.db_input($vars['note_alert_active']) + .',note_alert_laststaff='.db_input(isset($vars['note_alert_laststaff'])?1:0) + .',note_alert_assigned='.db_input(isset($vars['note_alert_assigned'])?1:0) + .',note_alert_dept_manager='.db_input(isset($vars['note_alert_dept_manager'])?1:0) + .',assigned_alert_active='.db_input($vars['assigned_alert_active']) + .',assigned_alert_staff='.db_input(isset($vars['assigned_alert_staff'])?1:0) + .',assigned_alert_team_lead='.db_input(isset($vars['assigned_alert_team_lead'])?1:0) + .',assigned_alert_team_members='.db_input(isset($vars['assigned_alert_team_members'])?1:0) + .',transfer_alert_active='.db_input($vars['transfer_alert_active']) + .',transfer_alert_assigned='.db_input(isset($vars['transfer_alert_assigned'])?1:0) + .',transfer_alert_dept_manager='.db_input(isset($vars['transfer_alert_dept_manager'])?1:0) + .',transfer_alert_dept_members='.db_input(isset($var['transfer_alert_dept_members'])?1:0) + .',overdue_alert_active='.db_input($vars['overdue_alert_active']) + .',overdue_alert_assigned='.db_input(isset($vars['overdue_alert_assigned'])?1:0) + .',overdue_alert_dept_manager='.db_input(isset($vars['overdue_alert_dept_manager'])?1:0) + .',overdue_alert_dept_members='.db_input(isset($var['overdue_alert_dept_members'])?1:0) + .',send_sys_errors='.db_input(isset($vars['send_sys_errors'])?1:0) + .',send_sql_errors='.db_input(isset($vars['send_sql_errors'])?1:0) + .',send_login_errors='.db_input(isset($vars['send_login_errors'])?1:0) + .' WHERE id='.db_input($this->getId()); return (db_query($sql)); } + + /** static **/ + function lookup($id) { + return ($id && ($cfg = new Config($id)) && $cfg->getId()==$id)?$cfg:null; + } } ?> diff --git a/include/class.cron.php b/include/class.cron.php index ddc4d2973e77ff93f6f83a4a3fefd6b4b9b82814..c8e3a81def985b99eb0f21eaea8751362e1ced05 100644 --- a/include/class.cron.php +++ b/include/class.cron.php @@ -31,7 +31,8 @@ class Cron { } function PurgeLogs() { - Sys::purgeLogs(); + global $ost; + if($ost) $ost->purgeLogs(); } function CleanOrphanedFiles() { diff --git a/include/class.email.php b/include/class.email.php index 0b4317f7e6e6dc82866288fc88631ff601b5753f..dba9a45d5d4c569c9a5e7b2c17c4254f12abdcee 100644 --- a/include/class.email.php +++ b/include/class.email.php @@ -122,7 +122,7 @@ class Email { } function send($to, $subject, $message, $attachments=null, $options=null) { - global $cfg; + global $cfg, $ost; //Get SMTP info IF enabled! $smtp=array(); @@ -149,11 +149,12 @@ class Email { $headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject, - 'Date'=>date('D,d M Y H:i:s O'), + 'Date'=>date('D, d M Y H:i:s O'), 'Message-ID' =>'<'.Misc::randCode(6).''.time().'-'.$this->getEmail().'>', 'X-Mailer' =>'osTicket v1.7', 'Content-Type' => 'text/html; charset="UTF-8"' ); + $mime = new Mail_mime(); $mime->setTXTBody($body); //XXX: Attachments @@ -189,8 +190,9 @@ class Email { if(!PEAR::isError($result)) return true; + //SMTP failed - log error. $alert=sprintf("Unable to email via %s:%d [%s]\n\n%s\n",$smtp['host'],$smtp['port'],$smtp['username'],$result->getMessage()); - Sys::log(LOG_ALERT,'SMTP Error',$alert,false); + $ost->logError('SMTP Error', $alert, false); //NOTE: email alert overwrite - don't email when having email trouble. //print_r($result); } @@ -292,6 +294,7 @@ class Email { //very basic checks $vars['name']=Format::striptags(trim($vars['name'])); + $vars['email']=trim($vars['email']); if($id && $id!=$vars['id']) $errors['err']='Internal error. Get technical help.'; @@ -300,7 +303,7 @@ class Email { $errors['email']='Valid email required'; }elseif(($eid=Email::getIdByEmail($vars['email'])) && $eid!=$id) { $errors['email']='Email already exits'; - }elseif($cfg && !strcasecmp($cfg->getAdminEmail(),$vars['email'])) { + }elseif($cfg && !strcasecmp($cfg->getAdminEmail(), $vars['email'])) { $errors['email']='Email already used as admin email!'; }elseif(Staff::getIdByEmail($vars['email'])) { //make sure the email doesn't belong to any of the staff $errors['email']='Email in-use by a staff member'; diff --git a/include/class.format.php b/include/class.format.php index a3461bf9d615c857382763c62b8ff49562352648..2c0993c459b108fdbd1bbf3394fb2e7f9ecdff95 100644 --- a/include/class.format.php +++ b/include/class.format.php @@ -200,7 +200,7 @@ class Format { } function userdate($format,$gmtime) { - return Format::date($format,$gmtime,$_SESSION['TZ_OFFSET'],$_SESSION['daylight']); + return Format::date($format,$gmtime,$_SESSION['TZ_OFFSET'],$_SESSION['TZ_DST']); } function date($format,$gmtimestamp,$offset=0,$daylight=false){ diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php index f25d72b26236471dd6b14e365a1745067ffe6f3e..a353b690be55c3f9cbd3740b6edcc7164dabc16e 100644 --- a/include/class.mailfetch.php +++ b/include/class.mailfetch.php @@ -255,7 +255,7 @@ class MailFetcher { } function createTicket($mid,$emailid=0){ - global $cfg; + global $cfg, $ost; $mailinfo=$this->getHeaderInfo($mid); @@ -265,11 +265,11 @@ class MailFetcher { return true; } - //Is the email address banned? + //Is the email address banned? if($mailinfo['from']['email'] && EmailFilter::isBanned($mailinfo['from']['email'])) { - //We need to let admin know... - Sys::log(LOG_WARNING,'Ticket denied','Banned email - '.$mailinfo['from']['email']); - return true; + //We need to let admin know... + $ost->logWarning('Ticket denied', 'Banned email - '.$mailinfo['from']['email']); + return true; } @@ -370,15 +370,15 @@ class MailFetcher { } function fetchMail(){ - global $cfg; + global $ost, $cfg; if(!$cfg->canFetchMail()) return; //We require imap ext to fetch emails via IMAP/POP3 if(!function_exists('imap_open')) { - $msg='PHP must be compiled with IMAP extension enabled for IMAP/POP3 fetch to work!'; - Sys::log(LOG_WARN,'Mail Fetch Error',$msg); + $msg='osTicket requires PHP IMAP extension enabled for IMAP/POP3 fetch to work!'; + $ost->logWarning('Mail Fetch Error', $msg); return; } @@ -393,7 +393,7 @@ class MailFetcher { //TODO: Lock the table here?? while($row=db_fetch_array($accounts)) { - $fetcher = new MailFetcher($row['userid'],Misc::decrypt($row['userpass'],SECRET_SALT), + $fetcher = new MailFetcher($row['userid'], Mcrypt::decrypt($row['userpass'],SECRET_SALT), $row['mail_host'],$row['mail_port'],$row['mail_protocol'],$row['mail_encryption']); if($fetcher->connect()){ $fetcher->fetchTickets($row['email_id'],$row['mail_fetchmax'],$row['mail_delete']?true:false,$row['mail_archivefolder']); @@ -410,7 +410,7 @@ class MailFetcher { "\nError: ".$fetcher->getLastError(). "\n\n ".$errors.' consecutive errors. Maximum of '.$MAX_ERRORS. ' allowed'. "\n\n This could be connection issues related to the host. Next delayed login attempt in aprox. 10 minutes"; - Sys::alertAdmin('Mail Fetch Failure Alert',$msg,true); + $ost->alertAdmin('Mail Fetch Failure Alert', $msg, true); } } } diff --git a/include/class.mcrypt.php b/include/class.mcrypt.php index a6a9791019d92ea2165b92c4ccd7e7e908380b6e..13d56a7df32e22ffe5abff5c5a6bf195cc58749d 100644 --- a/include/class.mcrypt.php +++ b/include/class.mcrypt.php @@ -15,20 +15,25 @@ **********************************************************************/ class Mcrypt { - function encrypt($text, $salt){ + function encrypt($text, $salt) { + global $ost; + + //if mcrypt extension is not installed--simply return unencryted text and log a warning (if enabled). + if(!function_exists('mcrypt_encrypt') || !function_exists('mcrypt_decrypt')) { + if($ost) { + $msg='Cryptography extension mcrypt is not enabled or installed. Important text/data is being stored as plain text in database.'; + $ost->logWarning('mcrypt module missing', $msg); + } - //if mcrypt extension is not installed--simply return unencryted text and log a warning. - if(!function_exists('mcrypt_encrypt') || !function_exists('mcrypt_decrypt')){ - $msg='Cryptography extension mcrypt is not enabled or installed. Important text/data is being stored as plain text in database.'; - Sys::log(LOG_WARN,'mcrypt module missing',$msg); return $text; } - return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$salt, $text, MCRYPT_MODE_ECB, + return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)))); } - function decrypt($text, $salt){ + function decrypt($text, $salt) { + if(!function_exists('mcrypt_encrypt') || !function_exists('mcrypt_decrypt')) return $text; diff --git a/include/class.misc.php b/include/class.misc.php index d9f59f47858b23c9c47c2de6ea6c3cedfda61df1..409e4bac6f84eee1c73b1d040eda18455c0f4954 100644 --- a/include/class.misc.php +++ b/include/class.misc.php @@ -29,27 +29,6 @@ class Misc { return mt_rand($start,$end); } - function encrypt($text, $salt) { - - //if mcrypt extension is not installed--simply return unencryted text and log a warning. - if(!function_exists('mcrypt_encrypt') || !function_exists('mcrypt_decrypt')) { - $msg='Cryptography extension mcrypt is not enabled or installed. IMAP/POP passwords are being stored as plain text in database.'; - Sys::log(LOG_WARN,'mcrypt missing',$msg); - return $text; - } - - return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$salt, $text, MCRYPT_MODE_ECB, - mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)))); - } - - function decrypt($text, $salt) { - if(!function_exists('mcrypt_encrypt') || !function_exists('mcrypt_decrypt')) - return $text; - - return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, - mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))); - } - /* misc date helpers...this will go away once we move to php 5 */ function db2gmtime($var){ global $cfg; @@ -67,7 +46,7 @@ class Misc { $time=Misc::gmtime(); //gm time. else{ //user time to GM. $time=is_int($var)?$var:strtotime($var); - $offset=$_SESSION['TZ_OFFSET']+($_SESSION['daylight']?date('I',$time):0); + $offset=$_SESSION['TZ_OFFSET']+($_SESSION['TZ_DST']?date('I',$time):0); $time=$time-($offset*3600); } //gm to db time diff --git a/include/class.osticket.php b/include/class.osticket.php new file mode 100644 index 0000000000000000000000000000000000000000..eb1b0361971176c00673ee61a0f23f1c17f0fa7e --- /dev/null +++ b/include/class.osticket.php @@ -0,0 +1,228 @@ +<?php +/************************************************************************* + class.osticket.php + + osTicket (sys) -> Config. + + Core osTicket object: loads congfig and provides loggging facility. + + Use osTicket::start(configId) + + 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 osTicket { + + var $loglevel=array(1=>'Error','Warning','Debug'); + var $errors; + var $warning; + var $message; + + var $headers; + + var $config; + var $session; + + function osTicket($cfgId) { + $this->config = Config::lookup($cfgId); + $this->session = osTicketSession::start(SESSION_TTL); // start_session + } + + function isSystemOnline() { + return ($this->getConfig() && $this->getConfig()->isHelpdeskOnline() && !$this->isUpgradePending()); + } + + function isUpgradePending() { + return (defined('SCHEMA_SIGNATURE') && strcasecmp($this->getConfig()->getSchemaSignature(), SCHEMA_SIGNATURE)); + } + + function getSession() { + return $this->session; + } + + function getConfig() { + return $this->config; + } + + function getConfigId() { + + return $this->getConfig()?$this->getConfig()->getId():0; + } + + function addExtraHeader($header) { + $this->headers[md5($header)] = $header; + } + + function getExtraHeaders() { + return $this->headers; + } + + function getErrors() { + return $this->errors; + } + + function setErrors($errors) { + if(!is_array($errors)) + return $this->setError($errors); + + $this->errors = $errors; + } + + function getError() { + return $this->errors['err']; + } + + function setError($error) { + $this->errors['err'] = $error; + } + + function clearError() { + $this->setError(''); + } + + function getWarning() { + return $this->warning; + } + + function setWarning($warn) { + $this->warning = $warn; + } + + function clearWarning() { + $this->setWarning(''); + } + + + function getMessage() { + return $this->message; + } + + function setMessage($msg) { + $this->message = $msg; + } + + function clearMessage() { + $this->setMessage(''); + } + + + function alertAdmin($subject, $message, $log=false) { + + //Set admin's email address + if(!($to=$this->getConfig()->getAdminEmail())) + $to=ADMIN_EMAIL; + + //Try getting the alert email. + $email=null; + if(!($email=$this->getConfig()->getAlertEmail())) + $email=$this->getConfig()->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) + $this->log(LOG_CRIT, $subject, $message, false); //Log the entry...and make sure no alerts are resent. + + } + + function logDebug($title, $message, $alert=false) { + return $this->log(LOG_DEBUG, $title, $message, $alert); + } + + function logInfo($title, $message, $alert=false) { + return $this->log(LOG_INFO, $title, $message, $alert); + } + + function logWarning($title, $message, $alert=true) { + return $this->log(LOG_WARN, $title, $message, $alert); + } + + function logError($title, $error, $alert=true) { + return $this->log(LOG_ERR, $title, $error, $alert); + } + + function log($priority, $title, $message, $alert=false) { + + //We are providing only 3 levels of logs. Windows style. + switch($priority) { + case LOG_EMERG: + case LOG_ALERT: + case LOG_CRIT: + case LOG_ERR: + $level=1; //Error + break; + case LOG_WARN: + case LOG_WARNING: + $level=2; //Warning + break; + case LOG_NOTICE: + case LOG_INFO: + case LOG_DEBUG: + default: + $level=3; //Debug + } + + //Alert admin if enabled... + if($alert) + $this->alertAdmin($title, $message); + + + if($this->getConfig()->getLogLevel()<$level) + return false; + + //Save log based on system log level settings. + $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']); + + mysql_query($sql); //don't use db_query to avoid possible loop. + + return true; + } + + function purgeLogs() { + + if(!($gp=$this->getConfig()->getLogGracePeriod()) || !is_numeric($gp)) + return false; + + //System logs + $sql='DELETE FROM '.SYSLOG_TABLE.' WHERE DATE_ADD(created, INTERVAL '.$gp.' MONTH)<=NOW()'; + db_query($sql); + + //TODO: Activity logs + + return true; + } + + /**** static functions ****/ + function start($configId) { + + if(!$configId || !($ost = new osTicket($configId)) || $ost->getConfigId()!=$configId) + return null; + + //Set default time zone... user/staff settting will overwrite it (on login). + $_SESSION['TZ_OFFSET'] = $ost->getConfig()->getTZoffset(); + $_SESSION['TZ_DST'] = $ost->getConfig()->observeDaylightSaving(); + + return $ost; + } +} + +?> diff --git a/include/class.ostsession.php b/include/class.ostsession.php index ccbae6e03f90147f06b24a79b0e1468faae4f821..0bcd9449fb234c6b9a895da6b046527f7a7909a4 100644 --- a/include/class.ostsession.php +++ b/include/class.ostsession.php @@ -53,9 +53,11 @@ class osTicketSession { return (true); } - function read($session_id){ + function read($id){ $data=""; - $sql='SELECT session_data FROM '.SESSION_TABLE.' WHERE session_id='.db_input($session_id).' AND session_expire>NOW()'; + $sql='SELECT session_data FROM '.SESSION_TABLE + .' WHERE session_id='.db_input($id) + .' AND session_expire>NOW()'; if(($res=db_query($sql)) && db_num_rows($res)) list($data)=db_fetch_row($res); @@ -63,7 +65,7 @@ class osTicketSession { } function write($id, $data){ - global $cfg,$thisstaff; + global $thisstaff; $sql='REPLACE INTO '.SESSION_TABLE.' SET session_updated=NOW() '. ',session_id='.db_input($id). @@ -98,8 +100,9 @@ class osTicketSession { $sql.=" AND TIME_TO_SEC(TIMEDIFF(NOW(),session_updated))<$sec"; $users=array(); - if(($res=db_query($sql)) && db_num_rows($res)){ - list($users[])=db_fetch_row($res); + if(($res=db_query($sql)) && db_num_rows($res)) { + while(list($uid)=db_fetch_row($res)) + $users[] = $uid; } return $users; diff --git a/include/class.staff.php b/include/class.staff.php index 00554157935ba0d82aa77596bf9c912f0fcf5ad5..bd7379ed95e659fbf0c2c527735376f831238e89 100644 --- a/include/class.staff.php +++ b/include/class.staff.php @@ -95,7 +95,8 @@ class Staff { /* check if passwd reset is due. */ function isPasswdResetDue() { global $cfg; - return ($cfg && $cfg->getPasswdResetPeriod() && $this->ht['passwd_change_sec']>($cfg->getPasswdResetPeriod()*30*24*60*60)); + return ($cfg && $cfg->getPasswdResetPeriod() + && $this->ht['passwd_change_sec']>($cfg->getPasswdResetPeriod()*30*24*60*60)); } function isPasswdChangeDue() { @@ -495,7 +496,7 @@ class Staff { } function login($username, $passwd, &$errors, $strike=true) { - global $cfg, $session; + global $ost, $cfg; if($_SESSION['_staff']['laststrike']) { @@ -520,13 +521,16 @@ class Staff { $_SESSION['_staff']['userID']=$username; $user->refreshSession(); //set the hash. $_SESSION['TZ_OFFSET']=$user->getTZoffset(); - $_SESSION['daylight']=$user->observeDaylight(); - Sys::log(LOG_DEBUG,'Staff login',sprintf("%s logged in [%s]", $user->getUserName(), $_SERVER['REMOTE_ADDR'])); //Debug. + $_SESSION['TZ_DST']=$user->observeDaylight(); + + $ost->logDebug('Staff login', + sprintf("%s logged in [%s]", $user->getUserName(), $_SERVER['REMOTE_ADDR'])); //Debug. $sid=session_id(); //Current ID session_regenerate_id(TRUE); //Destroy old session ID - needed for PHP version < 5.1.0 TODO: remove when we move to php 5.3 as min. requirement. - if($session && is_object($session) && $sid) + if(($session=$ost->getSession()) && is_object($session) && $sid) $session->destroy($sid); + session_write_close(); return $user; @@ -540,12 +544,12 @@ class Staff { $alert='Excessive login attempts by a staff member?'."\n". 'Username: '.$_POST['username']."\n".'IP: '.$_SERVER['REMOTE_ADDR']."\n".'TIME: '.date('M j, Y, g:i a T')."\n\n". 'Attempts #'.$_SESSION['_staff']['strikes']."\n".'Timeout: '.($cfg->getStaffLoginTimeout()/60)." minutes \n\n"; - Sys::log(LOG_ALERT,'Excessive login attempts ('.$_POST['username'].')', $alert,($cfg->alertONLoginError())); + $ost->logWarning('Excessive login attempts ('.$_POST['username'].')', $alert, ($cfg->alertONLoginError())); } elseif($_SESSION['_staff']['strikes']%2==0) { //Log every other failed login attempt as a warning. $alert='Username: '.$_POST['username']."\n".'IP: '.$_SERVER['REMOTE_ADDR']. "\n".'TIME: '.date('M j, Y, g:i a T')."\n\n".'Attempts #'.$_SESSION['_staff']['strikes']; - Sys::log(LOG_WARNING,'Failed staff login attempt ('.$_POST['username'].')', $alert); + $ost->logWarning('Failed staff login attempt ('.$_POST['username'].')', $alert, false); } return false; diff --git a/include/class.sys.php b/include/class.sys.php deleted file mode 100644 index 33b5c830407f1b56fb1ef8eff47657e1296bb97a..0000000000000000000000000000000000000000 --- a/include/class.sys.php +++ /dev/null @@ -1,107 +0,0 @@ -<?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); - } - - } -} - -?> diff --git a/include/class.template.php b/include/class.template.php index 36d9b2f4845d3ca14ad564c9a8c829c11b9ab083..fa8d070d544c4bf5eda0da758fed814f106c529d 100644 --- a/include/class.template.php +++ b/include/class.template.php @@ -91,11 +91,12 @@ class Template { return (db_query($sql) && db_affected_rows()); } - function getMsgTemplate($name){ + function getMsgTemplate($name) { + global $ost; //TODO: Don't preload - do ondemand fetch! $tpl=array(); - switch(strtolower($name)){ + switch(strtolower($name)) { case 'ticket_autoresp': $tpl=array('subj'=>$this->ht['ticket_autoresp_subj'],'body'=>$this->ht['ticket_autoresp_body']); break; @@ -130,7 +131,7 @@ class Template { $tpl=array('subj'=>$this->ht['ticket_overdue_subj'],'body'=>$this->ht['ticket_overdue_body']); break; default: - Sys::log(LOG_WARNING,'Template Fetch Error',"Unable to fetch '$name' template - id #".$this->getId()); + $ost->logWarning('Template Fetch Error', "Unable to fetch '$name' template - id #".$this->getId()); $tpl=array(); } @@ -197,7 +198,7 @@ class Template { if($errors) return false; $sql='UPDATE '.EMAIL_TEMPLATE_TABLE.' SET updated=NOW() '; - switch(strtolower($vars['tpl'])){ + switch(strtolower($vars['tpl'])) { case 'ticket_autoresp': $sql.=',ticket_autoresp_subj='.db_input($vars['subj']).',ticket_autoresp_body='.db_input($vars['body']); break; @@ -326,8 +327,8 @@ class Template { return ($id && is_numeric($id) && ($t= new Template($id)) && $t->getId()==$id)?$t:null; } - function save($id,$vars,&$errors) { - global $cfg; + function save($id, $vars, &$errors) { + global $ost; $tpl=null; $vars['name']=Format::striptags(trim($vars['name'])); @@ -354,12 +355,14 @@ class Template { $sql='UPDATE '.EMAIL_TEMPLATE_TABLE.' SET '.$sql.' WHERE tpl_id='.db_input($id); if(db_query($sql)) return true; + $errors['err']='Unable to update the template. Internal error occurred'; - }elseif($tpl && ($info=$tpl->getInfo())){ + + } elseif($tpl && ($info=$tpl->getInfo())) { $sql='INSERT INTO '.EMAIL_TEMPLATE_TABLE.' SET '.$sql .' ,created=NOW() ' - .' ,cfg_id='.db_input($cfg->getId()) + .' ,cfg_id='.db_input($ost->getConfigId()) .' ,ticket_autoresp_subj='.db_input($info['ticket_autoresp_subj']) .' ,ticket_autoresp_body='.db_input($info['ticket_autoresp_body']) .' ,ticket_notice_subj='.db_input($info['ticket_notice_subj']) diff --git a/include/class.ticket.php b/include/class.ticket.php index 6a27d981bb24bdc7f05a6c8adec30615f0f7ed24..8be88bee75840140feced0586d520a615b845f52 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -885,11 +885,11 @@ class Ticket{ } function onOpenLimit($sendNotice=true) { - global $cfg; + global $ost, $cfg; //Log the limit notice as a warning for admin. $msg=sprintf('Max open tickets (%d) reached for %s ', $cfg->getMaxOpenTickets(), $this->getEmail()); - sys::log(LOG_WARNING, 'Max. Open Tickets Limit ('.$this->getEmail().')', $msg); + $ost->logWarning('Max. Open Tickets Limit ('.$this->getEmail().')', $msg); if(!$sendNotice || !$cfg->sendOverLimitNotice()) return true; @@ -916,7 +916,7 @@ class Ticket{ .'Open ticket: '.$client->getNumOpenTickets()."\n" .'Max Allowed: '.$cfg->getMaxOpenTickets()."\n\nNotice sent to the user."; - Sys::alertAdmin('Overlimit Notice',$msg); + $ost->alertAdmin('Overlimit Notice', $msg); return true; } @@ -1803,7 +1803,7 @@ class Ticket{ * $autorespond and $alertstaff overwrites config settings... */ function create($vars, &$errors, $origin, $autorespond=true, $alertstaff=true) { - global $cfg,$thisclient,$_FILES; + global $ost, $cfg, $thisclient, $_FILES; //Check for 403 if ($vars['email'] && Validator::is_email($vars['email'])) { @@ -1811,7 +1811,7 @@ class Ticket{ //Make sure the email address is not banned if(EmailFilter::isBanned($vars['email'])) { $errors['err']='Ticket denied. Error #403'; - Sys::log(LOG_WARNING,'Ticket denied','Banned email - '.$vars['email']); + $ost->logWarning('Ticket denied', 'Banned email - '.$vars['email']); return 0; } @@ -1822,8 +1822,9 @@ class Ticket{ && ($openTickets>=$cfg->getMaxOpenTickets()) ) { $errors['err']="You've reached the maximum open tickets allowed."; - Sys::log(LOG_WARNING, 'Ticket denied -'.$vars['email'], - sprintf('Max open tickets (%d) reached for %s ', $cfg->getMaxOpenTickets(), $vars['email'])); + $ost->logWarning('Ticket denied -'.$vars['email'], + sprintf('Max open tickets (%d) reached for %s ', + $cfg->getMaxOpenTickets(), $vars['email'])); return 0; } @@ -1832,9 +1833,10 @@ class Ticket{ if (($email_filter=new EmailFilter($vars)) && ($filter=$email_filter->shouldReject())) { $errors['err']='Ticket denied. Error #403'; - Sys::log(LOG_WARNING,'Ticket denied', - sprintf('Banned email - %s by filter "%s"', $vars['email'], - $filter->getName())); + $ost->logWarning('Ticket denied', + sprintf('Banned email - %s by filter "%s"', + $vars['email'], $filter->getName())); + return 0; } diff --git a/include/mysql.php b/include/mysql.php index 47f5ab5c8854e7ce4f6cdea47cd5ebd7dccd2fc4..85be9829966500b99fecb4714cb3be53e09c41ec 100644 --- a/include/mysql.php +++ b/include/mysql.php @@ -16,8 +16,6 @@ vim: expandtab sw=4 ts=4 sts=4: **********************************************************************/ - require_once(INCLUDE_DIR.'class.sys.php'); - function db_connect($host, $user, $passwd, $db = "") { //Assert @@ -53,7 +51,11 @@ return $version; } - + + function db_timezone() { + return db_get_variable('time_zone'); + } + function db_get_variable($variable, $type='session') { $sql =sprintf('SELECT @@%s.%s',$type,$variable); return db_result(db_query($sql)); @@ -74,18 +76,18 @@ } // execute sql query - function db_query($query, $database="",$conn=""){ - global $cfg; + function db_query($query, $database="", $conn=""){ + global $ost; if($conn) { /* connection is provided*/ - $result = ($database)?mysql_db_query($database,$query,$conn):mysql_query($query,$conn); + $result = ($database)?mysql_db_query($database, $query, $conn):mysql_query($query, $conn); } else { - $result = ($database)?mysql_db_query($database,$query):mysql_query($query); + $result = ($database)?mysql_db_query($database, $query):mysql_query($query); } - if(!$result) { //error reporting + if(!$result && $ost) { //error reporting $alert='['.$query.']'."\n\n".db_error(); - Sys::log(LOG_ALERT,'DB Error #'.db_errno(),$alert,($cfg && $cfg->alertONSQLError())); + $ost->logError('DB Error #'.db_errno(), $alert, ($ost->alertONSQLError())); //echo $alert; #uncomment during debuging or dev. } diff --git a/include/staff/attachment.inc.php b/include/staff/attachment.inc.php index 5951b87c0b0788767b34c98d1a7290a7c1debcdd..6027678123ca55684c721ae72f98133135f603f7 100644 --- a/include/staff/attachment.inc.php +++ b/include/staff/attachment.inc.php @@ -1,7 +1,7 @@ <?php if(!defined('OSTADMININC') || !$thisstaff->isAdmin()) die('Access Denied'); //Get the config info. -$config=($errors && $_POST)?Format::input($_POST):$cfg->getConfig(); +$config=($errors && $_POST)?Format::input($_POST):$cfg->getConfigInfo(); ?> <table width="100%" border="0" cellspacing=0 cellpadding=0> <form action="admin.php?t=attach" method="post"> diff --git a/include/staff/header.inc.php b/include/staff/header.inc.php index 46722948c5aae7309c921623dfeaa57aa2c32a0b..c48ee8b360070be6f82cf74e073f8122aa0ff897 100644 --- a/include/staff/header.inc.php +++ b/include/staff/header.inc.php @@ -1,87 +1,88 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html> -<head> - <meta http-equiv="content-type" content="text/html; charset=UTF-8"> - <?php - if(defined('AUTO_REFRESH') && is_numeric(AUTO_REFRESH_RATE) && AUTO_REFRESH_RATE>0){ //Refresh rate - echo '<meta http-equiv="refresh" content="'.AUTO_REFRESH_RATE.'" />'; - } - ?> - <title>osTicket Staff Control Panel</title> - <!--[if IE]> - <style type="text/css"> - .tip_shadow { display:block !important; } - </style> - <![endif]--> - <script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script> - <script type="text/javascript" src="../js/jquery-ui-1.8.18.custom.min.js"></script> - <script type="text/javascript" src="./js/tips.js"></script> - <script type="text/javascript" src="./js/nicEdit.js"></script> - <script type="text/javascript" src="./js/bootstrap-typeahead.js"></script> - <script type="text/javascript" src="./js/scp.js"></script> - <link rel="stylesheet" href="./css/scp.css" media="screen"> - <link rel="stylesheet" href="./css/typeahead.css" media="screen"> - <link type="text/css" href="../css/ui-lightness/jquery-ui-1.8.18.custom.css" rel="stylesheet" /> -</head> -<body> -<div id="container"> - <div id="header"> - <a href="index.php" id="logo">osTicket - Customer Support System</a> - <p id="info">Howdy, <strong><?php echo $thisstaff->getUserName(); ?></strong> - <?php - if($thisstaff->isAdmin() && !defined('ADMINPAGE')) { ?> - | <a href="admin.php">Admin Panel</a> - <?php }else{ ?> - | <a href="index.php">Staff Panel</a> - <?php } ?> - | <a href="profile.php">My Preferences</a> | <a href="logout.php">Log Out</a> - </p> - </div> - <ul id="nav"> - <?php - if(($tabs=$nav->getTabs()) && is_array($tabs)){ - foreach($tabs as $name =>$tab) { - echo sprintf('<li class="%s"><a href="%s">%s</a>',$tab['active']?'active':'inactive',$tab['href'],$tab['desc']); - if(!$tab['active'] && ($subnav=$nav->getSubMenu($name))){ - echo "<ul>\n"; - foreach($subnav as $item) { - echo sprintf('<li><a class="%s" href="%s" title="%s" >%s</a></li>', - $item['iconclass'],$item['href'],$item['title'],$item['desc']); - } - echo "\n</ul>\n"; - } - echo "\n</li>\n"; - } - } ?> - </ul> - <ul id="sub_nav"> - <?php - if(($subnav=$nav->getSubMenu()) && is_array($subnav)){ - $activeMenu=$nav->getActiveMenu(); - if($activeMenu>0 && !isset($subnav[$activeMenu-1])) - $activeMenu=0; - foreach($subnav as $k=> $item) { - if($item['droponly']) continue; - $class=$item['iconclass']; - if ($activeMenu && $k+1==$activeMenu - or (!$activeMenu - && (strpos(strtoupper($item['href']),strtoupper(basename($_SERVER['SCRIPT_NAME']))) !== false - or ($item['urls'] - && in_array(basename($_SERVER['SCRIPT_NAME']),$item['urls']) - ) - ))) - $class="$class active"; - - echo sprintf('<li><a class="%s" href="%s" title="%s" >%s</a></li>',$class,$item['href'],$item['title'],$item['desc']); - } - } - ?> - </ul> - <div id="content"> - <?php if($errors['err']) { ?> - <div id="msg_error"><?php echo $errors['err']; ?></div> - <?php }elseif($msg) { ?> - <div id="msg_notice"><?php echo $msg; ?></div> - <?php }elseif($warn) { ?> - <div id="msg_warning"><?php echo $warn; ?></div> - <?php } ?> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <title>osTicket Staff Control Panel</title> + <!--[if IE]> + <style type="text/css"> + .tip_shadow { display:block !important; } + </style> + <![endif]--> + <script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script> + <script type="text/javascript" src="../js/jquery-ui-1.8.18.custom.min.js"></script> + <script type="text/javascript" src="./js/tips.js"></script> + <script type="text/javascript" src="./js/nicEdit.js"></script> + <script type="text/javascript" src="./js/bootstrap-typeahead.js"></script> + <script type="text/javascript" src="./js/scp.js"></script> + <link rel="stylesheet" href="./css/scp.css" media="screen"> + <link rel="stylesheet" href="./css/typeahead.css" media="screen"> + <link type="text/css" href="../css/ui-lightness/jquery-ui-1.8.18.custom.css" rel="stylesheet" /> + <?php + if($ost && ($headers=$ost->getExtraHeaders())) { + echo "\n\t".implode("\n\t", $headers)."\n"; + } + ?> +</head> +<body> +<div id="container"> + <div id="header"> + <a href="index.php" id="logo">osTicket - Customer Support System</a> + <p id="info">Howdy, <strong><?php echo $thisstaff->getUserName(); ?></strong> + <?php + if($thisstaff->isAdmin() && !defined('ADMINPAGE')) { ?> + | <a href="admin.php">Admin Panel</a> + <?php }else{ ?> + | <a href="index.php">Staff Panel</a> + <?php } ?> + | <a href="profile.php">My Preferences</a> | <a href="logout.php">Log Out</a> + </p> + </div> + <ul id="nav"> + <?php + if(($tabs=$nav->getTabs()) && is_array($tabs)){ + foreach($tabs as $name =>$tab) { + echo sprintf('<li class="%s"><a href="%s">%s</a>',$tab['active']?'active':'inactive',$tab['href'],$tab['desc']); + if(!$tab['active'] && ($subnav=$nav->getSubMenu($name))){ + echo "<ul>\n"; + foreach($subnav as $item) { + echo sprintf('<li><a class="%s" href="%s" title="%s" >%s</a></li>', + $item['iconclass'],$item['href'],$item['title'],$item['desc']); + } + echo "\n</ul>\n"; + } + echo "\n</li>\n"; + } + } ?> + </ul> + <ul id="sub_nav"> + <?php + if(($subnav=$nav->getSubMenu()) && is_array($subnav)){ + $activeMenu=$nav->getActiveMenu(); + if($activeMenu>0 && !isset($subnav[$activeMenu-1])) + $activeMenu=0; + foreach($subnav as $k=> $item) { + if($item['droponly']) continue; + $class=$item['iconclass']; + if ($activeMenu && $k+1==$activeMenu + or (!$activeMenu + && (strpos(strtoupper($item['href']),strtoupper(basename($_SERVER['SCRIPT_NAME']))) !== false + or ($item['urls'] + && in_array(basename($_SERVER['SCRIPT_NAME']),$item['urls']) + ) + ))) + $class="$class active"; + + echo sprintf('<li><a class="%s" href="%s" title="%s" >%s</a></li>',$class,$item['href'],$item['title'],$item['desc']); + } + } + ?> + </ul> + <div id="content"> + <?php if($errors['err']) { ?> + <div id="msg_error"><?php echo $errors['err']; ?></div> + <?php }elseif($msg) { ?> + <div id="msg_notice"><?php echo $msg; ?></div> + <?php }elseif($warn) { ?> + <div id="msg_warning"><?php echo $warn; ?></div> + <?php } ?> + diff --git a/include/staff/preference.inc.php b/include/staff/preference.inc.php index 054d592a7555f8d16f436f9cc5c9c66a91b6f27b..6eb27354b0d4cd019964b460b58a3c4b0db1110e 100644 --- a/include/staff/preference.inc.php +++ b/include/staff/preference.inc.php @@ -2,7 +2,7 @@ if(!defined('OSTADMININC') || !$thisstaff->isAdmin()) die('Access Denied'); //Get the config info. -$config=($errors && $_POST)?Format::input($_POST):Format::htmlchars($cfg->getConfig()); +$config=($errors && $_POST)?Format::input($_POST):Format::htmlchars($cfg->getConfigInfo()); //Basic checks for warnings... $warn=array(); if($config['allow_attachments'] && !$config['upload_dir']) { diff --git a/login.php b/login.php index 48dc9ec4aea9a5ab7c427cacc30b17c8005944b5..823c48a030d494f2b6ae4f06bbbcf35c8de8918d 100644 --- a/login.php +++ b/login.php @@ -53,10 +53,10 @@ if($_POST && (!empty($_POST['lemail']) && !empty($_POST['lticket']))): $_SESSION['_client']['key'] =$ticket->getExtId(); //Ticket ID --acts as password when used with email. See above. $_SESSION['_client']['token'] =$user->getSessionToken(); $_SESSION['TZ_OFFSET']=$cfg->getTZoffset(); - $_SESSION['daylight']=$cfg->observeDaylightSaving(); + $_SESSION['TZ_DST']=$cfg->observeDaylightSaving(); //Log login info... $msg=sprintf("%s/%s logged in [%s]",$ticket->getEmail(),$ticket->getExtId(),$_SERVER['REMOTE_ADDR']); - Sys::log(LOG_DEBUG,'User login',$msg); + $ost->logDebug('User login', $msg); //Redirect tickets.php session_write_close(); session_regenerate_id(); @@ -75,11 +75,11 @@ if($_POST && (!empty($_POST['lemail']) && !empty($_POST['lticket']))): 'Email: '.$_POST['lemail']."\n".'Ticket#: '.$_POST['lticket']."\n". 'IP: '.$_SERVER['REMOTE_ADDR']."\n".'Time:'.date('M j, Y, g:i a T')."\n\n". 'Attempts #'.$_SESSION['_client']['strikes']; - Sys::log(LOG_ALERT,'Excessive login attempts (client)',$alert,($cfg->alertONLoginError())); + $ost->logError('Excessive login attempts (client)', $alert, ($cfg->alertONLoginError())); }elseif($_SESSION['_client']['strikes']%2==0){ //Log every other failed login attempt as a warning. $alert='Email: '.$_POST['lemail']."\n".'Ticket #: '.$_POST['lticket']."\n".'IP: '.$_SERVER['REMOTE_ADDR']. "\n".'TIME: '.date('M j, Y, g:i a T')."\n\n".'Attempts #'.$_SESSION['_client']['strikes']; - Sys::log(LOG_WARNING,'Failed login attempt (client)',$alert); + $ost->logWarning('Failed login attempt (client)', $alert); } endif; diff --git a/main.inc.php b/main.inc.php index 0bfcf903a91866cd9c046f3d90020e3539cd935a..57769d32c5fc1d55a6b6d4857aa48cc5da8587fb 100644 --- a/main.inc.php +++ b/main.inc.php @@ -65,7 +65,7 @@ $configfile=INCLUDE_DIR.'settings.php'; elseif(file_exists(INCLUDE_DIR.'ost-config.php')) //NEW config file v 1.6 stable ++ $configfile=INCLUDE_DIR.'ost-config.php'; - elseif(file_exists(ROOT_DIR.'include/')) + elseif(file_exists(ROOT_DIR.'setup/')) header('Location: '.ROOT_PATH.'setup/'); if(!$configfile || !file_exists($configfile)) die('<b>Error loading settings. Contact admin.</b>'); @@ -86,10 +86,10 @@ #include required files + require(INCLUDE_DIR.'class.osticket.php'); require(INCLUDE_DIR.'class.ostsession.php'); require(INCLUDE_DIR.'class.usersession.php'); require(INCLUDE_DIR.'class.pagenate.php'); //Pagenate helper! - require(INCLUDE_DIR.'class.sys.php'); //system loader & config & logger. require(INCLUDE_DIR.'class.log.php'); require(INCLUDE_DIR.'class.mcrypt.php'); require(INCLUDE_DIR.'class.misc.php'); @@ -158,26 +158,25 @@ $ferror=null; if (!db_connect(DBHOST,DBUSER,DBPASS) || !db_select_database(DBNAME)) { $ferror='Unable to connect to the database'; - }elseif(!($cfg=Sys::getConfig())){ + } elseif(!($ost=osTicket::start(1)) || !($cfg = $ost->getConfig())) { $ferror='Unable to load config info from DB. Get tech support.'; } - if($ferror){ //Fatal error - Sys::alertAdmin('osTicket Fatal Error',$ferror); //try alerting admin. - die("<b>Fatal Error:</b> Contact system administrator."); //Generic error. + + if($ferror) { //Fatal error + //try alerting admin using email in config file + $msg=$ferror."\n\n".THISPAGE; + Email::sendmail(ADMIN_EMAIL, 'osTicket Fatal Error', $msg, sprintf('"osTicket Alerts"<%s>', ADMIN_EMAIL)); + //Display generic error to the user + die("<b>Fatal Error:</b> Contact system administrator."); exit; } + //Init - $cfg->init(); + $session = $ost->getSession(); //System defaults we might want to make global// #pagenation default - user can overwrite it! - define('DEFAULT_PAGE_LIMIT',$cfg->getPageSize()?$cfg->getPageSize():25); - - //Start session handler! - $session=osTicketSession::start(SESSION_TTL); // start_session - //Set default timezone...staff will overwrite it. - $_SESSION['TZ_OFFSET']=$cfg->getTZoffset(); - $_SESSION['daylight']=$cfg->observeDaylightSaving(); + define('DEFAULT_PAGE_LIMIT', $cfg->getPageSize()?$cfg->getPageSize():25); #Cleanup magic quotes crap. if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) { diff --git a/scp/admin.inc.php b/scp/admin.inc.php index 5f6f5e7633422251ca7bbf8960f69461a8afbc35..89e234e2f13e14204701348fa2222ae195930ea2 100644 --- a/scp/admin.inc.php +++ b/scp/admin.inc.php @@ -15,16 +15,16 @@ **********************************************************************/ require('staff.inc.php'); //Make sure config is loaded and the staff is set and of admin type -if(!$cfg or !$thisstaff or !$thisstaff->isAdmin()){ +if(!$ost or !$thisstaff or !$thisstaff->isAdmin()){ header('Location: index.php'); require('index.php'); // just in case! exit; } //Some security related warnings - bitch until fixed!!! :) -if($cfg->isUpgradePending()) { +if($ost->isUpgradePending()) { $errors['err']=$sysnotice='System upgrade is pending <a href="../setup/upgrade.php">Upgrade Now</a>'; -} elseif(!$cfg->isHelpDeskOffline()) { +} else { if(file_exists('../setup/')) { $sysnotice='Please take a minute to delete <strong>setup/install</strong> directory (../setup/) for security reasons.'; diff --git a/scp/autocron.php b/scp/autocron.php index 589ea416e85d0ef5524d1bd8d9f28ce590bce0ef..366351c9defedffd2bccd478b1d3c8bd2e349ba4 100644 --- a/scp/autocron.php +++ b/scp/autocron.php @@ -35,8 +35,9 @@ require_once(INCLUDE_DIR.'class.cron.php'); Cron::TicketMonitor(); //Age tickets: We're going to age tickets ever regardless of cron settings. if($cfg && $cfg->enableAutoCron()){ //ONLY fetch tickets if autocron is enabled! Cron::MailFetcher(); //Fetch mail. - Sys::log(LOG_DEBUG,'Autocron','cron job executed ['.$thisstaff->getUserName().']'); -} + $ost->logDebug('Autocron', 'Cron job executed ['.$thisstaff->getUserName().']'); +} + $_SESSION['lastcroncall']=time(); endif; $output = ob_get_contents(); diff --git a/scp/logout.php b/scp/logout.php index e02e4be1609d387d43b3e59d1693a291d80677cb..32d62d14abb29363df9a7da033a1f0873821cbc9 100644 --- a/scp/logout.php +++ b/scp/logout.php @@ -15,7 +15,9 @@ vim: expandtab sw=4 ts=4 sts=4: **********************************************************************/ require('staff.inc.php'); -Sys::log(LOG_DEBUG,'Staff logout',sprintf("%s logged out [%s]",$thisstaff->getUserName(),$_SERVER['REMOTE_ADDR'])); //Debug. +$ost->logDebug('Staff logout', + sprintf("%s logged out [%s]", + $thisstaff->getUserName(), $_SERVER['REMOTE_ADDR'])); //Debug. $_SESSION['_staff']=array(); session_unset(); session_destroy(); diff --git a/scp/profile.php b/scp/profile.php index f9dd42a5f19a597e6b40c0e68774dce58d2a4a02..e6506fa6ece8bd0686550cae4810e17a2c76cd6f 100644 --- a/scp/profile.php +++ b/scp/profile.php @@ -29,7 +29,7 @@ if(!$errors && $_POST) { //Handle post $thisstaff->reload(); $staff->reload(); $_SESSION['TZ_OFFSET']=$thisstaff->getTZoffset(); - $_SESSION['daylight']=$thisstaff->observeDaylight(); + $_SESSION['TZ_DST']=$thisstaff->observeDaylight(); }elseif(!$errors['err']) $errors['err']='Profile update error. Try correcting the errors below and try again!'; } diff --git a/scp/settings.php b/scp/settings.php index d7809d63751039c61639efd448c5718a888cb7ac..9058fe42ca52c4f9b428bbc52f2ed2cb61f80a8a 100644 --- a/scp/settings.php +++ b/scp/settings.php @@ -57,7 +57,7 @@ require(STAFFINC_DIR.'header.inc.php'); </form> </div> <?php -$config=($errors && $_POST)?Format::input($_POST):Format::htmlchars($cfg->getConfig()); +$config=($errors && $_POST)?Format::input($_POST):Format::htmlchars($cfg->getConfigInfo()); include_once(STAFFINC_DIR."settings-$target.inc.php"); include_once(STAFFINC_DIR.'footer.inc.php'); ?> diff --git a/scp/staff.inc.php b/scp/staff.inc.php index 7a4dfb9e3a596fcc480894c60ecf2bede2304181..a28cf1d63a288ad39697527bd10c7d4fbbd28611 100644 --- a/scp/staff.inc.php +++ b/scp/staff.inc.php @@ -71,7 +71,7 @@ if(!$thisstaff->isAdmin()) { } //Staff are not allowed to login in offline mode!! - if($cfg->isHelpDeskOffline() || $cfg->isUpgradePending()) { + if(!$ost->isSystemOffline() || $ost->isUpgradePending()) { staffLoginPage('System Offline'); exit; } @@ -83,17 +83,16 @@ $thisstaff->refreshSession(); /******* SET STAFF DEFAULTS **********/ //Set staff's timezone offset. $_SESSION['TZ_OFFSET']=$thisstaff->getTZoffset(); -$_SESSION['daylight']=$thisstaff->observeDaylight(); +$_SESSION['TZ_DST']=$thisstaff->observeDaylight(); -define('AUTO_REFRESH_RATE',$thisstaff->getRefreshRate()*60); -define('PAGE_LIMIT',$thisstaff->getPageLimit()?$thisstaff->getPageLimit():DEFAULT_PAGE_LIMIT); +define('PAGE_LIMIT', $thisstaff->getPageLimit()?$thisstaff->getPageLimit():DEFAULT_PAGE_LIMIT); //Clear some vars. we use in all pages. $errors=array(); $msg=$warn=$sysnotice=''; $tabs=array(); $submenu=array(); -if($cfg->isUpgradePending()) { +if($ost->isUpgradePending()) { $errors['err']=$sysnotice='System upgrade is pending <a href="../setup/upgrade.php">Upgrade Now</a>'; } elseif($cfg->isHelpDeskOffline()) { $sysnotice='<strong>System is set to offline mode</strong> - Client interface is disabled and ONLY admins can access staff control panel.'; diff --git a/scp/tickets.php b/scp/tickets.php index 567c3f69755525aca1146ce8433a44e2485c6fc3..03b95b3f71e8d8c972a40f036007173adc565d79 100644 --- a/scp/tickets.php +++ b/scp/tickets.php @@ -485,7 +485,7 @@ if($ticket) { //set refresh rate if the user has it configured if(!$_POST && $_REQUEST['a']!='search' && ($min=$thisstaff->getRefreshRate())) - define('AUTO_REFRESH', $min*60); + $ost->addExtraHeader('<meta http-equiv="refresh" content="'.($min*60).'" />'); } require_once(STAFFINC_DIR.'header.inc.php'); diff --git a/setup/inc/class.upgrader.php b/setup/inc/class.upgrader.php index 73af7e6066cddf41140d7bd6f2c2618431dfe83f..891d472d9264a78501bac8ec6d7a4d28abf8553c 100644 --- a/setup/inc/class.upgrader.php +++ b/setup/inc/class.upgrader.php @@ -50,8 +50,9 @@ class Upgrader extends SetupWizard { } function onError($error) { + global $ost; - Sys::log(LOG_ERR, 'Upgrader Error', $error); + $ost->logError('Upgrader Error', $error); $this->setError($error); $this->setState('aborted'); } @@ -191,6 +192,7 @@ class Upgrader extends SetupWizard { } function upgrade() { + global $ost; if($this->getPendingTasks() || !($patches=$this->getPatches())) return false; @@ -209,7 +211,7 @@ class Upgrader extends SetupWizard { if(($info = $this->readPatchInfo($patch)) && $info['version']) $logMsg.= ' ('.$info['version'].') '; - Sys::log(LOG_DEBUG, 'Upgrader - Patch applied', $logMsg); + $ost->logDebug('Upgrader - Patch applied', $logMsg); //Check if the said patch has scripted tasks if(!($tasks=$this->getTasksForPatch($phash))) diff --git a/setup/p.php b/setup/p.php index babeebb866f198e7fc78516a34133164d72a9b47..51c7055f257559099fd600ef12c31e882605873d 100644 --- a/setup/p.php +++ b/setup/p.php @@ -41,19 +41,19 @@ if(!$_SESSION['ost_upgrader'][$upgrader->getShash()]['progress']) { } if($upgrader->getNumPendingTasks()) { - if($upgrader->doTasks() && !$upgrader->getNumPendingTasks() && $cfg->isUpgradePending()) { + if($upgrader->doTasks() && !$upgrader->getNumPendingTasks() && $ost->isUpgradePending()) { //Just reporting done...with tasks - break in between patches! header("HTTP/1.1 304 Not Modified"); exit; } -} elseif($cfg->isUpgradePending() && $upgrader->isUpgradable()) { +} elseif($ost->isUpgradePending() && $upgrader->isUpgradable()) { $version = $upgrader->getNextVersion(); if($upgrader->upgrade()) { //We're simply reporting progress here - call back will report next action' Http::response(200, "Upgraded to $version ... post-upgrade checks!"); exit; } -} elseif(!$cfg->isUpgradePending()) { +} elseif(!$ost->isUpgradePending()) { $upgrader->setState('done'); session_write_close(); header("HTTP/1.1 304 Not Modified"); diff --git a/setup/upgrade.php b/setup/upgrade.php index 0406383707cfe245fd11aae9323ee1422d6d679e..e5fd21084ccb534167d681ee6288793d5a683296 100644 --- a/setup/upgrade.php +++ b/setup/upgrade.php @@ -48,7 +48,7 @@ if($_POST && $_POST['s'] && !$upgrader->isAborted()) { switch(strtolower($_POST['s'])) { case 'prereq': //XXX: check if it's upgradable version?? - if(!$cfg->isUpgradePending()) + if(!$ost->isUpgradePending()) $errors['err']=' Nothing to do! System already upgraded to the current version'; elseif(!$upgrader->isUpgradable()) $errors['err']='The upgrader does NOT support upgrading from the current vesion!'; @@ -60,9 +60,9 @@ if($_POST && $_POST['s'] && !$upgrader->isAborted()) { case 'upgrade': //Manual upgrade.... when JS (ajax) is not supported. if($upgrader->getNumPendingTasks()) { $upgrader->doTasks(); - } elseif($cfg->isUpgradePending() && $upgrader->isUpgradable()) { + } elseif($ost->isUpgradePending() && $upgrader->isUpgradable()) { $upgrader->upgrade(); - } elseif(!$cfg->isUpgradePending()) { + } elseif(!$ost->isUpgradePending()) { $upgrader->setState('done'); } @@ -89,7 +89,7 @@ switch(strtolower($upgrader->getState())) { $inc='upgrade-prereq.inc.php'; if($upgrader->isAborted()) $inc='upgrade-aborted.inc.php'; - elseif(!$cfg->isUpgradePending()) + elseif(!$ost->isUpgradePending()) $errors['err']='Nothing to do! System already upgraded to the latest version'; elseif(!$upgrader->isUpgradable()) $errors['err']='The upgrader does NOT support upgrading from the current vesion!';