From 562f00035612ee2ed5df2f96c02393fa1189f26e Mon Sep 17 00:00:00 2001 From: markjcrane Date: Sat, 2 Apr 2016 17:53:51 -0600 Subject: [PATCH] Add a new switch class with a method to get the directories needed for FreeSWITCH and add them to default settings -> switch category. --- app/call_centers/app_defaults.php | 41 ----- app/modules/app_defaults.php | 30 ++-- resources/classes/switch.php | 244 ++++++++++++++++++++++++++++++ 3 files changed, 263 insertions(+), 52 deletions(-) create mode 100644 resources/classes/switch.php diff --git a/app/call_centers/app_defaults.php b/app/call_centers/app_defaults.php index b25e350928..f34a3c0be0 100644 --- a/app/call_centers/app_defaults.php +++ b/app/call_centers/app_defaults.php @@ -24,45 +24,4 @@ Mark J Crane */ -//process this only one time -if ($domains_processed == 1) { - - //add switch call_center dir if it is missing - $sql = "select count(*) as num_rows from v_default_settings "; - $sql .= "where default_setting_category = 'switch' "; - $sql .= "and default_setting_subcategory = 'call_center' "; - $sql .= "and default_setting_name = 'dir' "; - $prep_statement = $db->prepare($sql); - if ($prep_statement) { - $prep_statement->execute(); - $row = $prep_statement->fetch(PDO::FETCH_ASSOC); - if ($row['num_rows'] == 0) { - $sql = "insert into v_default_settings "; - $sql .= "("; - $sql .= "default_setting_uuid, "; - $sql .= "default_setting_category, "; - $sql .= "default_setting_subcategory, "; - $sql .= "default_setting_name, "; - $sql .= "default_setting_value, "; - $sql .= "default_setting_enabled, "; - $sql .= "default_setting_description "; - $sql .= ")"; - $sql .= "values "; - $sql .= "("; - $sql .= "'".uuid()."', "; - $sql .= "'switch', "; - $sql .= "'call_center', "; - $sql .= "'dir', "; - $sql .= "'".$_SESSION['switch']['conf']['dir']."/autoload_configs', "; - $sql .= "'false', "; - $sql .= "'' "; - $sql .= ")"; - $db->exec(check_sql($sql)); - unset($sql); - } - unset($prep_statement, $row); - } - -} - ?> \ No newline at end of file diff --git a/app/modules/app_defaults.php b/app/modules/app_defaults.php index 43adc1c143..3ba3108f89 100644 --- a/app/modules/app_defaults.php +++ b/app/modules/app_defaults.php @@ -17,25 +17,33 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2012 + Portions created by the Initial Developer are Copyright (C) 2008-2016 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ - -//use the module class to get the list of modules from the db and add any missing modules +//process one time if ($domains_processed == 1) { - $mod = new modules; - $mod->db = $db; - $mod->dir = $_SESSION['switch']['mod']['dir']; - $mod->get_modules(); - $mod->synch(); - $msg = $mod->msg; - //synchronize the modules - save_module_xml(); + //add missing switch directories in default settings + $switch = new switch; + $switch->settings(); + unset($switch); + + //use the module class to get the list of modules from the db and add any missing modules + if (isset($_SESSION['switch']['mod']['dir'])) { + $mod = new modules; + $mod->db = $db; + $mod->dir = $_SESSION['switch']['mod']['dir']; + $mod->get_modules(); + $mod->synch(); + $msg = $mod->msg; + + //save the modules.conf + save_module_xml(); + } } ?> \ No newline at end of file diff --git a/resources/classes/switch.php b/resources/classes/switch.php new file mode 100644 index 0000000000..1f519f1389 --- /dev/null +++ b/resources/classes/switch.php @@ -0,0 +1,244 @@ + $value) { + unset($this->$key); + } + } + + /** + * settings Set switch directories in default settings + */ + public function settings() { + + //define the variables + if (!isset($this->event_socket_ip_address) { + $this->event_socket_ip_address = $_SESSION['event_socket_ip_address']; + } + if (!isset($this->event_socket_port) { + $this->event_socket_port = $_SESSION['event_socket_port']; + } + if (!isset($this->event_socket_password) { + $this->event_socket_password = $_SESSION['event_socket_password']; + } + + //connect to event socket + $fp = event_socket_create($this->event_socket_ip_address, $this->event_socket_port, $this->event_socket_password); + if ($fp === false) { + return false; + } + + //run the api command + $result = event_socket_request($fp, 'api global_getvar'); + + //close event socket + fclose($fp); + + //set the result as a named array + $vars = array(); + foreach (explode("\n", $result) as $row) { + $a = explode("=", $row); + if (substr($a[0], -4) == "_dir") { + $vars[$a[0]] = $a[1]; + } + } + + //set the bin directory + if ($vars['base_dir'] == "/usr/local/freeswitch") { + $bin = "/usr/local/freeswitch/bin"; + } else { + $bin = ""; + } + + //create the default settings array + $x=0; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'bin'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $bin; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'base'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['base_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'call_center'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['conf_dir'].'/autoload_configs'; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'conf'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['conf_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'db'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['db_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'dialplan'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['conf_dir'].'/dialplan'; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'extensions'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['conf_dir'].'/directory'; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'grammar'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['grammar_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'log'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['log_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'mod'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['mod_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'phrases'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['conf_dir'].'/lang'; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'recordings'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['recordings_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'scripts'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['script_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'sip_profiles'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['conf_dir'].'/sip_profiles'; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'sounds'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['sounds_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'storage'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['storage_dir']; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + $array[$x]['default_setting_category'] = 'switch'; + $array[$x]['default_setting_subcategory'] = 'voicemail'; + $array[$x]['default_setting_name'] = 'dir'; + $array[$x]['default_setting_value'] = $vars['storage_dir'].'/voicemail'; + $array[$x]['default_setting_enabled'] = 'true'; + $array[$x]['default_setting_description'] = ''; + $x++; + + //get an array of the default settings + $sql = "select * from v_default_settings "; + $sql .= "where default_setting_category = 'theme' "; + $prep_statement = $db->prepare($sql); + $prep_statement->execute(); + $default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED); + unset ($prep_statement, $sql); + + //find the missing default settings + $x = 0; + foreach ($array as $setting) { + $found = false; + $missing[$x] = $setting; + foreach ($default_settings as $row) { + if (trim($row['default_setting_subcategory']) == trim($setting['default_setting_subcategory'])) { + $found = true; + //remove items from the array that were found + unset($missing[$x]); + } + } + $x++; + } + + //add the missing default settings + foreach ($missing as $row) { + //add the default settings + $orm = new orm; + $orm->name('default_settings'); + $orm->save($row); + $message = $orm->message; + unset($orm); + //print_r($message); + } + unset($missing); + + //set the default settings + foreach ($array as $row) { + if (!isset($_SESSION['switch'][$row['default_setting_subcategory']])) { + $_SESSION['switch'][$row['default_setting_subcategory']] = $row['default_setting_value']; + } + } + + //unset the array variable + unset($array); + } +} + +?> \ No newline at end of file