Portions created by the Initial Developer are Copyright (C) 2016-2018 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('sip_profile_add') || permission_exists('sip_profile_edit')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //action add or update if (is_uuid($_REQUEST["id"])) { $action = "update"; $sip_profile_uuid = $_REQUEST["id"]; } else { $action = "add"; } //get http post variables and set them to php variables if (is_array($_POST)) { $sip_profile_uuid = $_POST["sip_profile_uuid"]; $sip_profile_name = $_POST["sip_profile_name"]; $sip_profile_hostname = $_POST["sip_profile_hostname"]; $sip_profile_enabled = $_POST["sip_profile_enabled"]; $sip_profile_description = $_POST["sip_profile_description"]; $sip_profile_domains = $_POST["sip_profile_domains"]; $sip_profile_settings = $_POST["sip_profile_settings"]; } //process the user data and save it to the database if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { //get the uuid from the POST if ($action == "update") { $sip_profile_uuid = $_POST["sip_profile_uuid"]; } //validate the token $token = new token; if (!$token->validate($_SERVER['PHP_SELF'])) { message::add($text['message-invalid_token'],'negative'); header('Location: sip_profiles.php'); exit; } //check for all required data $msg = ''; //if (strlen($sip_profile_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-sip_profile_uuid']."
\n"; } if (strlen($sip_profile_name) == 0) { $msg .= $text['message-required']." ".$text['label-sip_profile_name']."
\n"; } //if (strlen($sip_profile_hostname) == 0) { $msg .= $text['message-required']." ".$text['label-sip_profile_hostname']."
\n"; } if (strlen($sip_profile_enabled) == 0) { $msg .= $text['message-required']." ".$text['label-sip_profile_enabled']."
\n"; } if (strlen($sip_profile_description) == 0) { $msg .= $text['message-required']." ".$text['label-sip_profile_description']."
\n"; } if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { require_once "resources/header.php"; require_once "resources/persist_form_var.php"; echo "
\n"; echo "
\n"; echo $msg."
"; echo "
\n"; persistformvar($_POST); echo "
\n"; require_once "resources/footer.php"; return; } //add the sip_profile_uuid if (!is_uuid($_POST["sip_profile_uuid"])) { $sip_profile_uuid = uuid(); } //prepare the array $array['sip_profiles'][0]['sip_profile_uuid'] = $sip_profile_uuid; $array['sip_profiles'][0]['sip_profile_name'] = $sip_profile_name; $array['sip_profiles'][0]['sip_profile_hostname'] = $sip_profile_hostname; $array['sip_profiles'][0]['sip_profile_enabled'] = $sip_profile_enabled; $array['sip_profiles'][0]['sip_profile_description'] = $sip_profile_description; $y = 0; foreach ($sip_profile_domains as $row) { if (strlen($row['sip_profile_domain_uuid']) > 0) { if (is_uuid($row['sip_profile_domain_uuid'])) { $sip_profile_domain_uuid = $row['sip_profile_domain_uuid']; } else { $sip_profile_domain_uuid = uuid(); } if (strlen($row["sip_profile_domain_alias"]) > 0) { $array['sip_profiles'][0]['sip_profile_domains'][$y]["sip_profile_uuid"] = $sip_profile_uuid; $array['sip_profiles'][0]['sip_profile_domains'][$y]["sip_profile_domain_uuid"] = $sip_profile_domain_uuid; $array['sip_profiles'][0]['sip_profile_domains'][$y]["sip_profile_domain_name"] = $row["sip_profile_domain_name"]; $array['sip_profiles'][0]['sip_profile_domains'][$y]["sip_profile_domain_alias"] = $row["sip_profile_domain_alias"]; $array['sip_profiles'][0]['sip_profile_domains'][$y]["sip_profile_domain_parse"] = $row["sip_profile_domain_parse"]; } $y++; } } $y = 0; foreach ($sip_profile_settings as $row) { if (strlen($row['sip_profile_setting_uuid']) > 0) { if (is_uuid($row['sip_profile_setting_uuid'])) { $sip_profile_setting_uuid = $row['sip_profile_setting_uuid']; } else { $sip_profile_setting_uuid = uuid(); } if (strlen($row["sip_profile_setting_name"]) > 0) { $array['sip_profiles'][0]['sip_profile_settings'][$y]["sip_profile_uuid"] = $sip_profile_uuid; $array['sip_profiles'][0]['sip_profile_settings'][$y]["sip_profile_setting_uuid"] = $sip_profile_setting_uuid; $array['sip_profiles'][0]['sip_profile_settings'][$y]["sip_profile_setting_name"] = $row["sip_profile_setting_name"]; $array['sip_profiles'][0]['sip_profile_settings'][$y]["sip_profile_setting_value"] = $row["sip_profile_setting_value"]; $array['sip_profiles'][0]['sip_profile_settings'][$y]["sip_profile_setting_enabled"] = $row["sip_profile_setting_enabled"]; $array['sip_profiles'][0]['sip_profile_settings'][$y]["sip_profile_setting_description"] = $row["sip_profile_setting_description"]; } $y++; } } //grant temporary permissions $p = new permissions; $p->add('sip_profile_domain_add', 'temp'); $p->add('sip_profile_setting_add', 'temp'); //save to the data $database = new database; $database->app_name = 'sip_profiles'; $database->app_uuid = '159a8da8-0e8c-a26b-6d5b-19c532b6d470'; $database->save($array); $message = $database->message; //get the hostname if ($sip_profile_hostname == '') { $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); if ($fp) { $sip_profile_hostname = event_socket_request($fp, 'api switchname'); } } //revoke temporary permissions $p->delete('sip_profile_domain_add', 'temp'); $p->delete('sip_profile_setting_add', 'temp'); //clear the cache $cache = new cache; $cache->delete("configuration:sofia.conf:".$sip_profile_hostname); //save the sip profile xml save_sip_profile_xml(); //apply settings reminder $_SESSION["reload_xml"] = true; //redirect the user if ($action == "add") { message::add($text['message-add']); } if ($action == "update") { message::add($text['message-update']); } header('Location: sip_profile_edit.php?id='.urlencode($sip_profile_uuid)); exit; } //pre-populate the form if (is_array($_GET) && $_POST["persistformvar"] != "true") { $sip_profile_uuid = $_GET["id"]; $sql = "select * from v_sip_profiles "; $sql .= "where sip_profile_uuid = :sip_profile_uuid "; $parameters['sip_profile_uuid'] = $sip_profile_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && @sizeof($row) != 0) { $sip_profile_name = $row["sip_profile_name"]; $sip_profile_hostname = $row["sip_profile_hostname"]; $sip_profile_enabled = $row["sip_profile_enabled"]; $sip_profile_description = $row["sip_profile_description"]; } unset($sql, $parameters, $row); } //get the child data $sql = "select * from v_sip_profile_settings "; $sql .= "where sip_profile_uuid = :sip_profile_uuid "; $sql .= "order by sip_profile_setting_name "; $parameters['sip_profile_uuid'] = $sip_profile_uuid; $database = new database; $sip_profile_settings = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //add an empty row $x = count($sip_profile_settings); $sip_profile_settings[$x]['sip_profile_setting_uuid'] = uuid(); $sip_profile_settings[$x]['sip_profile_uuid'] = $sip_profile_uuid; $sip_profile_settings[$x]['sip_profile_setting_name'] = ''; $sip_profile_settings[$x]['sip_profile_setting_value'] = ''; $sip_profile_settings[$x]['sip_profile_setting_enabled'] = ''; $sip_profile_settings[$x]['sip_profile_setting_description'] = ''; //get the child data $sql = "select * from v_sip_profile_domains "; $sql .= "where sip_profile_uuid = :sip_profile_uuid "; $parameters['sip_profile_uuid'] = $sip_profile_uuid; $database = new database; $sip_profile_domains = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //add an empty row $x = count($sip_profile_domains); $sip_profile_domains[$x]['sip_profile_domain_uuid'] = uuid(); $sip_profile_domains[$x]['sip_profile_uuid'] = $sip_profile_uuid; $sip_profile_domains[$x]['sip_profile_domain_name'] = ''; $sip_profile_domains[$x]['sip_profile_domain_alias'] = ''; $sip_profile_domains[$x]['sip_profile_domain_parse'] = ''; //create token $object = new token; $token = $object->create($_SERVER['PHP_SELF']); //show the header $document['title'] = $text['title-sip_profile']; require_once "resources/header.php"; //label to form input echo "\n"; //show the content echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo " "; echo "
".$text['title-sip_profile']."

\n"; echo " "; if ($action == 'update' && ( permission_exists('dialplan_add') || permission_exists('inbound_route_add') || permission_exists('outbound_route_add') || permission_exists('time_condition_add') )) { echo " \n"; } echo " "; echo "
\n"; echo " ".$text['label-sip_profile_name']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-sip_profile_name']."\n"; echo "
\n"; echo " ".$text['title-sip_profile_domains']."\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; $x = 0; foreach ($sip_profile_domains as $row) { echo " \n"; if (is_uuid($row["sip_profile_domain_uuid"])) { $sip_profile_domain_uuid = $row["sip_profile_domain_uuid"]; } if (is_uuid($row["sip_profile_uuid"])) { $sip_profile_uuid = $row["sip_profile_uuid"]; } echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; //convert last empty labels to form elements if ($row["sip_profile_domain_name"] == '' && $row["sip_profile_domain_alias"] == '' && $row["sip_profile_domain_parse"] == '') { echo "\n"; } $x++; } echo "
 ".$text['label-sip_profile_domain_name']."".$text['label-sip_profile_domain_alias']."".$text['label-sip_profile_domain_parse']."
\n"; echo "   \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (strlen($row["sip_profile_domain_name"]) > 0) { echo " ".$v_link_label_delete."\n"; } echo "
\n"; echo "
\n"; echo " ".$text['label-sip_profile_settings']."\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; $x = 0; foreach ($sip_profile_settings as $row) { echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; //convert last empty labels to form elements if ($row["sip_profile_setting_name"] == '' && $row["sip_profile_setting_value"] == '' && $row["sip_profile_setting_enabled"] == '' && $row["sip_profile_setting_description"] == '') { echo "\n"; } $x++; $x++; } echo "
 ".$text['label-sip_profile_setting_name']."".$text['label-sip_profile_setting_value']."".$text['label-sip_profile_setting_enabled']."".$text['label-sip_profile_setting_description']."
\n"; echo "   \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (strlen($row["sip_profile_setting_name"]) > 0) { echo " ".$v_link_label_delete."\n"; } echo "
\n"; echo "
\n"; echo " ".$text['label-sip_profile_hostname']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-sip_profile_hostname']."\n"; echo "
\n"; echo " ".$text['label-sip_profile_enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-sip_profile_enabled']."\n"; echo "
\n"; echo " ".$text['label-sip_profile_description']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-sip_profile_description']."\n"; echo "
\n"; if ($action == "update") { echo " \n"; } echo " \n"; echo "
\n"; echo " \n"; echo "
"; echo "
"; echo "

"; //include the footer require_once "resources/footer.php"; ?>