Location: PHPKode > projects > osTicket > osTicket-osTicket-1.7-6c1f163/include/class.config.php
<?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 $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 *, (TIME_TO_SEC(TIMEDIFF(NOW(), UTC_TIMESTAMP()))/3600) as db_tz_offset '
            .' 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'];

        //Get the default time zone
        // We can't JOIN timezone table above due to upgrade support.
        if($this->config['default_timezone_id'])
            $this->config['tz_offset'] = Timezone::getOffsetById($this->config['default_timezone_id']);
        else
            $this->config['tz_offset'] = 0;

        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 getDBTZoffset() {
        return $this->config['db_tz_offset'];
    }

    /* 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['tz_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 'system':
                return $this->updateSystemSettings($vars, $errors);
                break;
            case 'tickets':
                return $this->updateTicketsSettings($vars, $errors);
                break;
            case 'emails':
                return $this->updateEmailsSettings($vars, $errors);
                break;
           case 'attachments':
                return $this->updateAttachmentsSetting($vars,$errors);
                break;
           case 'autoresp':
                return $this->updateAutoresponderSettings($vars, $errors);
                break;
            case 'alerts':
                return $this->updateAlertsSettings($vars, $errors);
                break;
            case 'kb':
                return $this->updateKBSettings($vars, $errors);
                break;
            default:
                $errors['err']='Unknown setting option. Get technical support.';
        }

        return false;
    }

    function updateSystemSettings($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');
        //Date & Time Options
        $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() '
            .',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'])
            .',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 updateTicketsSettings($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($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(!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)
            .',clickable_urls='.db_input(isset($vars['clickable_urls'])?1:0)
            .',hide_staff_name='.db_input(isset($vars['hide_staff_name'])?1:0)
            .',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 updateEmailsSettings($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_auto_cron='.db_input(isset($vars['enable_auto_cron'])?1:0)
            .',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 updateAutoresponderSettings($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 updateKBSettings($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 updateAlertsSettings($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_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;
    }
}
?>
Return current item: osTicket