Copyright (C) 2010-2015 All Rights Reserved. Contributor(s): Matthew Vale */ require_once "root.php"; //define the install class class global_settings { // cached data protected $_switch_dirs; protected $_switch_vdirs; public function get_switch_dirs() { return $this->_switch_dirs; } public function get_switch_vdirs() { return $this->_switch_vdirs; } // dirs - detected from the switch protected $_switch_base_dir = ''; protected $_switch_cache_dir = ''; protected $_switch_conf_dir = ''; protected $_switch_db_dir = ''; protected $_switch_grammar_dir = ''; protected $_switch_htdocs_dir = ''; protected $_switch_log_dir = ''; protected $_switch_mod_dir = ''; protected $_switch_recordings_dir = ''; protected $_switch_run_dir = ''; protected $_switch_script_dir = ''; protected $_switch_sounds_dir = ''; protected $_switch_storage_dir = ''; protected $_switch_temp_dir = ''; public function switch_base_dir() { return $this->_switch_base_dir; } public function switch_cache_dir() { return $this->_switch_cache_dir; } public function switch_conf_dir() { return $this->_switch_conf_dir; } public function switch_db_dir() { return $this->_switch_db_dir; } public function switch_grammar_dir() { return $this->_switch_grammar_dir; } public function switch_htdocs_dir() { return $this->_switch_htdocs_dir; } public function switch_log_dir() { return $this->_switch_log_dir; } public function switch_mod_dir() { return $this->_switch_mod_dir; } public function switch_recordings_dir() { return $this->_switch_recordings_dir; } public function switch_run_dir() { return $this->_switch_run_dir; } public function switch_script_dir() { return $this->_switch_script_dir; } public function switch_sounds_dir() { return $this->_switch_sounds_dir; } public function switch_storage_dir() { return $this->_switch_storage_dir; } public function switch_temp_dir() { return $this->_switch_temp_dir; } // virtual dirs - assumed based on the detected dirs protected $_switch_voicemail_vdir = ''; protected $_switch_phrases_vdir = ''; protected $_switch_extensions_vdir = ''; protected $_switch_sip_profiles_vdir = ''; protected $_switch_dialplan_vdir = ''; protected $_switch_backup_vdir = ''; public function switch_voicemail_vdir() { return $this->_switch_voicemail_vdir; } public function switch_phrases_vdir() { return $this->_switch_phrases_vdir; } public function switch_extensions_vdir() { return $this->_switch_extensions_vdir; } public function switch_sip_profiles_vdir() { return $this->_switch_sip_profiles_vdir; } public function switch_dialplan_vdir() { return $this->_switch_dialplan_vdir; } public function switch_backup_vdir() { return $this->_switch_backup_vdir; } // event socket protected $_switch_event_host; protected $_switch_event_port; protected $_switch_event_password; public function switch_event_host() { return $this->_switch_event_host; } public function switch_event_port() { return $this->_switch_event_port; } public function switch_event_password() { return $this->_switch_event_password; } // database information protected $_db_type; protected $_db_path; protected $_db_host; protected $_db_port; protected $_db_name; protected $_db_username; protected $_db_password; protected $_db_create; protected $_db_create_username; protected $_db_create_password; public function db_type() { return $this->_db_type; } public function db_path() { return $this->_db_path; } public function db_host() { return $this->_db_host; } public function db_port() { return $this->_db_port; } public function db_name() { return $this->_db_name; } public function db_username() { return $this->_db_username; } public function db_password() { return $this->_db_password; } public function db_create() { return $this->_db_create; } public function db_create_username() { return $this->_db_create_username; } public function db_create_password() { return $this->_db_create_password; } //misc information protected $_domain_uuid; protected $_domain_name; protected $_domain_count; public function domain_uuid() { return $this->_domain_uuid; } public function domain_name() { return $this->_domain_name; } public function domain_count() { return $this->_domain_count; } public function set_domain_uuid($domain_uuid) { $e = new Exception(); $trace = $e->getTrace(); if($trace[1]['function'] != 'create_domain'){ throw new Exception('Only create_domain is allowed to update the domain_uuid'); } $this->_domain_uuid = $domain_uuid; } public function __construct($detect_switch = null, $domain_name = null, $domain_uuid = null) { $this->_switch_dirs = preg_grep ('/^switch_.*_dir$/', get_class_methods('global_settings') ); sort( $this->_switch_dirs ); $this->_switch_vdirs = preg_grep ('/^switch_.*_vdir$/', get_class_methods('global_settings') ); sort( $this->_switch_vdirs ); if(is_null($detect_switch)){ //take settings from session foreach ($this->_switch_dirs as $dir){ $category = 'switch'; $session_var; preg_match( '/^switch_(.*)_dir$/', $dir, $session_var); $dir = "_$dir"; if($session_var[1] == 'script'){ $session_var[1] = 'scripts'; } if($session_var[1] == 'temp'){ $category = 'server'; } $this->$dir = $_SESSION[$category][$session_var[1]]['dir']; } foreach ($this->_switch_vdirs as $vdir){ $category = 'switch'; $session_var; preg_match( '/^switch_(.*)_vdir$/', $vdir, $session_var); $vdir = "_$vdir"; if($session_var[1] == 'backup'){ $category = 'server'; } $this->$vdir = $_SESSION[$category][$session_var[1]]['dir']; } $this->_switch_event_host = $_SESSION['event_socket_ip_address']; $this->_switch_event_port = $_SESSION['event_socket_port']; $this->_switch_event_password = $_SESSION['event_socket_password']; // domain info $this->_domain_name = $_SESSION['domain_name']; $this->_domain_uuid = $_SESSION['domain_uuid']; // collect misc info $this->_domain_count = count($_SESSION["domains"]); // collect db_info global $db_type, $db_path, $db_host, $db_port, $db_name, $db_username, $db_password; $this->_db_type = $db_type; $this->_db_path = $db_path; $this->_db_host = $db_host; $this->_db_port = $db_port; $this->_db_name = $db_name; $this->_db_username = $db_username; $this->_db_password = $db_password; }elseif(!is_a($detect_switch, 'detect_switch')){ throw new Exception('The parameter $detect_switch must be a detect_switch object (or a subclass of)'); }else{ //copy from detect_switch foreach($detect_switch->get_dirs() as $dir){ $t_dir = "_switch_$dir"; $this->$t_dir = $detect_switch->$dir(); } foreach($detect_switch->get_vdirs() as $vdir){ $t_vdir = "_switch_$vdir"; $this->$t_vdir = $detect_switch->$vdir(); } $this->_switch_event_host = $detect_switch->event_host; $this->_switch_event_port = $detect_switch->event_port; $this->_switch_event_password = $detect_switch->event_password; //copy from _POST foreach($_POST as $key=>$value){ if(substr($key,0,3) == "db_"){ $o_key = "_$key"; $this->$o_key = $value; } } if($this->_db_create and strlen($this->_db_create_username) == 0) { $this->_db_create_username = $this->_db_username; $this->_db_create_password = $this->_db_password; } if (strlen($this->_db_port) == 0) { $this->_db_port = "5432"; } // domain info if(strlen($domain_uuid) == 0){ $domain_uuid = uuid(); } $this->_domain_name = $domain_name; $this->_domain_uuid = $domain_uuid; //collect misc info $this->_domain_count = 1; //assumed to be one } } } ?>