<?php
/*********************************************************************
class.config.php
osTicket config info manager.
Peter Rotich <hide@address.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.email.php');
class Config {
var $id=0;
var $mysqltzoffset=0;
var $config=array();
var $defaultDept; //Default Department
var $defaultSLA; //Default SLA
var $defaultEmail; //Default Email
var $alertEmail; //Alert Email
var $defaultSMTPEmail; //Default SMTP Email
function Config($id) {
$this->load($id);
}
function load($id=0) {
if(!$id && !($id=$this->getId()))
return false;
$sql='SELECT * FROM '.CONFIG_TABLE
.' WHERE id='.db_input($id);
if(!($res=db_query($sql)) || !db_num_rows($res))
return false;
$this->config=db_fetch_array($res);
$this->id=$this->config['id'];
$this->setMysqlTZ(db_timezone());
return true;
}
function reload() {
if(!$this->load($this->getId()))
return false;
return true;
}
function isHelpDeskOffline() {
return !$this->isOnline();
}
function isHelpDeskOnline() {
return $this->isOnline();
}
function isOnline() {
return ($this->config['isonline']);
}
function isKnowledgebaseEnabled() {
require_once(INCLUDE_DIR.'class.faq.php');
return ($this->config['enable_kb'] && FAQ::countPublishedFAQs());
}
function getVersion() {
return THIS_VERSION;
}
//Used to detect version prior to 1.7 (useful during upgrade)
function getDBVersion() {
return $this->config['ostversion'];
}
function getSchemaSignature() {
if($this->config['schema_signature'])
return $this->config['schema_signature'];
if($this->config['ostversion']) //old version 1.6 RC[1-5]-ST
return md5(strtoupper(trim($this->config['ostversion'])));
return null;
}
function setMysqlTZ($tz) {
//TODO: Combine the 2 replace regex
if($tz=='SYSTEM')
$this->mysqltzoffset=preg_replace('/([+-]\d{2})(\d{2})/','\1',date('O'));
else
$this->mysqltzoffset=preg_replace('/([+-]\d{2})(:)(\d{2})/','\1',$tz);
}
function getMysqlTZoffset() {
return $this->mysqltzoffset;
}
/* Date & Time Formats */
function observeDaylightSaving() {
return ($this->config['enable_daylight_saving']);
}
function getTimeFormat() {
return $this->config['time_format'];
}
function getDateFormat() {
return $this->config['date_format'];
}
function getDateTimeFormat() {
return $this->config['datetime_format'];
}
function getDayDateTimeFormat() {
return $this->config['daydatetime_format'];
}
function getId() {
return $this->id;
}
function getConfigId() {
return $this->getId();
}
function getConfigInfo() {
return $this->config;
}
function getTitle() {
return $this->config['helpdesk_title'];
}
function getUrl() {
return $this->config['helpdesk_url'];
}
function getBaseUrl() { //Same as above with no trailing slash.
return rtrim($this->getUrl(),'/');
}
function getTZOffset() {
return $this->config['timezone_offset'];
}
function getPageSize() {
return $this->config['max_page_size'];
}
function getGracePeriod() {
return $this->config['overdue_grace_period'];
}
function getPasswdResetPeriod() {
return $this->config['passwd_reset_period'];
}
function showRelatedTickets() {
return $this->config['show_related_tickets'];
}
function showNotesInline(){
return $this->config['show_notes_inline'];
}
function getClientTimeout() {
return $this->getClientSessionTimeout();
}
function getClientSessionTimeout() {
return $this->config['client_session_timeout']*60;
}
function getClientLoginTimeout() {
return $this->config['client_login_timeout']*60;
}
function getClientMaxLogins() {
return $this->config['client_max_logins'];
}
function getStaffTimeout() {
return $this->getStaffSessionTimeout();
}
function getStaffSessionTimeout() {
return $this->config['staff_session_timeout']*60;
}
function getStaffLoginTimeout() {
return $this->config['staff_login_timeout']*60;
}
function getStaffMaxLogins() {
return $this->config['staff_max_logins'];
}
function getLockTime() {
return $this->config['autolock_minutes'];
}
function getDefaultDeptId() {
return $this->config['default_dept_id'];
}
function getDefaultDept() {
if(!$this->defaultDept && $this->getDefaultDeptId())
$this->defaultDept=Dept::lookup($this->getDefaultDeptId());
return $this->defaultDept;
}
function getDefaultEmailId() {
return $this->config['default_email_id'];
}
function getDefaultEmail() {
if(!$this->defaultEmail && $this->getDefaultEmailId())
$this->defaultEmail=Email::lookup($this->getDefaultEmailId());
return $this->defaultEmail;
}
function getDefaultEmailAddress() {
$email=$this->getDefaultEmail();
return $email?$email->getAddress():null;
}
function getDefaultSLAId() {
return $this->config['default_sla_id'];
}
function getDefaultSLA() {
if(!$this->defaultSLA && $this->getDefaultSLAId())
$this->defaultSLA=SLA::lookup($this->getDefaultSLAId());
return $this->defaultSLA;
}
function getAlertEmailId() {
return $this->config['alert_email_id'];
}
function getAlertEmail() {
if(!$this->alertEmail && $this->config['alert_email_id'])
$this->alertEmail= new Email($this->config['alert_email_id']);
return $this->alertEmail;
}
function getDefaultSMTPEmail() {
if(!$this->defaultSMTPEmail && $this->config['default_smtp_id'])
$this->defaultSMTPEmail= new Email($this->config['default_smtp_id']);
return $this->defaultSMTPEmail;
}
function allowSMTPSpoofing() {
return $this->config['spoof_default_smtp'];
}
function getDefaultPriorityId() {
return $this->config['default_priority_id'];
}
function getDefaultTemplateId() {
return $this->config['default_template_id'];
}
function getDefaultTemplate() {
if(!$this->defaultTemplate && $this->getDefaultTemplateId())
$this->defaultTemplate = Template::lookup($this->getDefaultTemplateId());
return $this->defaultTemplate;
}
function getMaxOpenTickets() {
return $this->config['max_open_tickets'];
}
function getMaxFileSize() {
return $this->config['max_file_size'];
}
function getStaffMaxFileUploads() {
return $this->config['max_staff_file_uploads'];
}
function getClientMaxFileUploads() {
//TODO: change max_user_file_uploads to max_client_file_uploads
return $this->config['max_user_file_uploads'];
}
function getLogLevel() {
return $this->config['log_level'];
}
function getLogGracePeriod() {
return $this->config['log_graceperiod'];
}
function logTicketActivity() {
return $this->config['log_ticket_activity'];
}
function clickableURLS() {
return ($this->config['clickable_urls']);
}
function enableStaffIPBinding() {
return ($this->config['staff_ip_binding']);
}
function isCaptchaEnabled() {
return (extension_loaded('gd') && function_exists('gd_info') && $this->config['enable_captcha']);
}
function isAutoCronEnabled() {
return ($this->config['enable_auto_cron']);
}
function isEmailPollingEnabled() {
return ($this->config['enable_mail_polling']);
}
function isEmailPipingEnabled() {
return ($this->config['enable_email_piping']);
}
function allowPriorityChange() {
return ($this->config['allow_priority_change']);
}
function useEmailPriority() {
return ($this->config['use_email_priority']);
}
function getAdminEmail() {
return $this->config['admin_email'];
}
function getReplySeparator() {
return $this->config['reply_separator'];
}
function stripQuotedReply() {
return ($this->config['strip_quoted_reply']);
}
function saveEmailHeaders() {
return true; //No longer an option...hint: big plans for headers coming!!
}
function useRandomIds() {
return ($this->config['random_ticket_ids']);
}
/* autoresponders & Alerts */
function autoRespONNewTicket() {
return ($this->config['ticket_autoresponder']);
}
function autoRespONNewMessage() {
return ($this->config['message_autoresponder']);
}
function notifyONNewStaffTicket() {
return ($this->config['ticket_notice_active']);
}
function alertONNewMessage() {
return ($this->config['message_alert_active']);
}
function alertLastRespondentONNewMessage() {
return ($this->config['message_alert_laststaff']);
}
function alertAssignedONNewMessage() {
return ($this->config['message_alert_assigned']);
}
function alertDeptManagerONNewMessage() {
return ($this->config['message_alert_dept_manager']);
}
function alertONNewNote() {
return ($this->config['note_alert_active']);
}
function alertLastRespondentONNewNote() {
return ($this->config['note_alert_laststaff']);
}
function alertAssignedONNewNote() {
return ($this->config['note_alert_assigned']);
}
function alertDeptManagerONNewNote() {
return ($this->config['note_alert_dept_manager']);
}
function alertONNewTicket() {
return ($this->config['ticket_alert_active']);
}
function alertAdminONNewTicket() {
return ($this->config['ticket_alert_admin']);
}
function alertDeptManagerONNewTicket() {
return ($this->config['ticket_alert_dept_manager']);
}
function alertDeptMembersONNewTicket() {
return ($this->config['ticket_alert_dept_members']);
}
function alertONTransfer() {
return ($this->config['transfer_alert_active']);
}
function alertAssignedONTransfer() {
return ($this->config['transfer_alert_assigned']);
}
function alertDeptManagerONTransfer() {
return ($this->config['transfer_alert_dept_manager']);
}
function alertDeptMembersONTransfer() {
return ($this->config['transfer_alert_dept_members']);
}
function alertONAssignment() {
return ($this->config['assigned_alert_active']);
}
function alertStaffONAssignment() {
return ($this->config['assigned_alert_staff']);
}
function alertTeamLeadONAssignment() {
return ($this->config['assigned_alert_team_lead']);
}
function alertTeamMembersONAssignment() {
return ($this->config['assigned_alert_team_members']);
}
function alertONOverdueTicket() {
return ($this->config['overdue_alert_active']);
}
function alertAssignedONOverdueTicket() {
return ($this->config['overdue_alert_assigned']);
}
function alertDeptManagerONOverdueTicket() {
return ($this->config['overdue_alert_dept_manager']);
}
function alertDeptMembersONOverdueTicket() {
return ($this->config['overdue_alert_dept_members']);
}
function autoAssignReopenedTickets() {
return ($this->config['auto_assign_reopened_tickets']);
}
function showAssignedTickets() {
return ($this->config['show_assigned_tickets']);
}
function showAnsweredTickets() {
return ($this->config['show_answered_tickets']);
}
function hideStaffName() {
return ($this->config['hide_staff_name']);
}
function sendOverLimitNotice() {
return ($this->config['overlimit_notice_active']);
}
/* Error alerts sent to admin email when enabled */
function alertONSQLError() {
return ($this->config['send_sql_errors']);
}
function alertONLoginError() {
return ($this->config['send_login_errors']);
}
function alertONMailParseError() {
return ($this->config['send_mailparse_errors']);
}
/* Attachments */
function getAllowedFileTypes() {
return trim($this->config['allowed_filetypes']);
}
function emailAttachments() {
return ($this->config['email_attachments']);
}
function allowAttachments() {
return ($this->config['allow_attachments']);
}
function allowOnlineAttachments() {
return ($this->allowAttachments() && $this->config['allow_online_attachments']);
}
function allowAttachmentsOnlogin() {
return ($this->allowOnlineAttachments() && $this->config['allow_online_attachments_onlogin']);
}
function allowEmailAttachments() {
return ($this->allowAttachments() && $this->config['allow_email_attachments']);
}
/* Needed by upgrader on 1.6 and older releases upgrade - not not remove */
function getUploadDir() {
return $this->config['upload_dir'];
}
function updateSettings($vars,&$errors) {
if(!$vars || $errors)
return false;
switch(strtolower($vars['t'])) {
case 'general':
return $this->updateGeneralSetting($vars,$errors);
break;
case 'dates':
return $this->updateDateTimeSetting($vars,$errors);
break;
case 'tickets':
return $this->updateTicketsSetting($vars,$errors);
break;
case 'emails':
return $this->updateEmailsSetting($vars,$errors);
break;
case 'attachments':
return $this->updateAttachmentsSetting($vars,$errors);
break;
case 'autoresponders':
return $this->updateAutoresponderSetting($vars,$errors);
break;
case 'alerts':
return $this->updateAlertsSetting($vars,$errors);
break;
case 'kb':
return $this->updateKBSetting($vars,$errors);
break;
default:
$errors['err']='Unknown setting option. Get technical support.';
}
return false;
}
function updateGeneralSetting($vars, &$errors) {
$f=array();
$f['helpdesk_url']=array('type'=>'string', 'required'=>1, 'error'=>'Helpdesk URl required');
$f['helpdesk_title']=array('type'=>'string', 'required'=>1, 'error'=>'Helpdesk title required');
$f['default_dept_id']=array('type'=>'int', 'required'=>1, 'error'=>'Default Dept. required');
$f['default_template_id']=array('type'=>'int', 'required'=>1, 'error'=>'You must select template.');
$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)
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='.db_input($this->getId());
return (db_query($sql));
}
function updateDateTimeSetting($vars,&$errors) {
$f=array();
$f['time_format']=array('type'=>'string', 'required'=>1, 'error'=>'Time format required');
$f['date_format']=array('type'=>'string', 'required'=>1, 'error'=>'Date format required');
$f['datetime_format']=array('type'=>'string', 'required'=>1, 'error'=>'Datetime format required');
$f['daydatetime_format']=array('type'=>'string', 'required'=>1, 'error'=>'Day, Datetime format required');
$f['default_timezone_id']=array('type'=>'int', 'required'=>1, 'error'=>'Default Timezone required');
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='.db_input($this->getId());
return (db_query($sql));
}
function updateTicketsSetting($vars,&$errors) {
$f=array();
$f['default_sla_id']=array('type'=>'int', 'required'=>1, 'error'=>'Selection required');
$f['default_priority_id']=array('type'=>'int', 'required'=>1, 'error'=>'Selection required');
$f['max_open_tickets']=array('type'=>'int', 'required'=>1, 'error'=>'Enter valid numeric value');
$f['autolock_minutes']=array('type'=>'int', 'required'=>1, 'error'=>'Enter lock time in minutes');
if($vars['enable_captcha']) {
if (!extension_loaded('gd'))
$errors['enable_captcha']='The GD extension required';
elseif(!function_exists('imagepng'))
$errors['enable_captcha']='PNG support required for Image Captcha';
}
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)
.' WHERE id='.db_input($this->getId());
return (db_query($sql));
}
function updateEmailsSetting($vars,&$errors) {
$f=array();
$f['default_email_id']=array('type'=>'int', 'required'=>1, 'error'=>'Default email required');
$f['alert_email_id']=array('type'=>'int', 'required'=>1, 'error'=>'Selection required');
$f['admin_email']=array('type'=>'email', 'required'=>1, 'error'=>'System admin email required');
if($vars['strip_quoted_reply'] && !$vars['reply_separator'])
$errors['reply_separator']='Reply separator required to strip quoted reply.';
if($vars['admin_email'] && Email::getIdByEmail($vars['admin_email'])) //Make sure admin email is not also a system email.
$errors['admin_email']='Email already setup as system email';
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'])
.' WHERE id='.db_input($this->getId());
return (db_query($sql));
}
function updateAttachmentsSetting($vars,&$errors) {
if($vars['allow_attachments']) {
if(!ini_get('file_uploads'))
$errors['err']='The \'file_uploads\' directive is disabled in php.ini';
if(!is_numeric($vars['max_file_size']))
$errors['max_file_size']='Maximum file size required';
if(!$vars['allowed_filetypes'])
$errors['allowed_filetypes']='Allowed file extentions required';
if(!($maxfileuploads=ini_get('max_file_uploads')))
$maxfileuploads=DEFAULT_MAX_FILE_UPLOADS;
if(!$vars['max_user_file_uploads'] || $vars['max_user_file_uploads']>$maxfileuploads)
$errors['max_user_file_uploads']='Invalid selection. Must be less than '.$maxfileuploads;
if(!$vars['max_staff_file_uploads'] || $vars['max_staff_file_uploads']>$maxfileuploads)
$errors['max_staff_file_uploads']='Invalid selection. Must be less than '.$maxfileuploads;
}
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());
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'])
.' WHERE id='.db_input($this->getId());
return (db_query($sql));
}
function updateKBSetting($vars,&$errors) {
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)
.' WHERE id='.db_input($this->getId());
return (db_query($sql));
}
function updateAlertsSetting($vars,&$errors) {
if($vars['ticket_alert_active']
&& (!isset($vars['ticket_alert_admin'])
&& !isset($vars['ticket_alert_dept_manager'])
&& !isset($vars['ticket_alert_dept_members']))) {
$errors['ticket_alert_active']='Select recipient(s)';
}
if($vars['message_alert_active']
&& (!isset($vars['message_alert_laststaff'])
&& !isset($vars['message_alert_assigned'])
&& !isset($vars['message_alert_dept_manager']))) {
$errors['message_alert_active']='Select recipient(s)';
}
if($vars['note_alert_active']
&& (!isset($vars['note_alert_laststaff'])
&& !isset($vars['note_alert_assigned'])
&& !isset($vars['note_alert_dept_manager']))) {
$errors['note_alert_active']='Select recipient(s)';
}
if($vars['transfer_alert_active']
&& (!isset($vars['transfer_alert_assigned'])
&& !isset($vars['transfer_alert_dept_manager'])
&& !isset($vars['transfer_alert_dept_members']))) {
$errors['transfer_alert_active']='Select recipient(s)';
}
if($vars['overdue_alert_active']
&& (!isset($vars['overdue_alert_assigned'])
&& !isset($vars['overdue_alert_dept_manager'])
&& !isset($vars['overdue_alert_dept_members']))) {
$errors['overdue_alert_active']='Select recipient(s)';
}
if($vars['assigned_alert_active']
&& (!isset($vars['assigned_alert_staff'])
&& !isset($vars['assigned_alert_team_lead'])
&& !isset($vars['assigned_alert_team_members']))) {
$errors['assigned_alert_active']='Select recipient(s)';
}
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)
.' 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;
}
}
?>