Portions created by the Initial Developer are Copyright (C) 2016-2020 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)) { //process the http post data by submitted action if ($_POST['action'] != '' && is_uuid($_POST['sip_profile_uuid'])) { $array[0]['checked'] = 'true'; $array[0]['uuid'] = $_POST['sip_profile_uuid']; switch ($_POST['action']) { case 'delete': if (permission_exists('sip_profile_delete')) { $obj = new sip_profiles; $obj->delete($array); } break; } header('Location: sip_profiles.php'); exit; } $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"]; $sip_profile_domains_delete = $_POST["sip_profile_domains_delete"]; $sip_profile_settings_delete = $_POST["sip_profile_settings_delete"]; } //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; //revoke temporary permissions $p->delete('sip_profile_domain_add', 'temp'); $p->delete('sip_profile_setting_add', 'temp'); //remove checked domains if ( $action == 'update' && permission_exists('sip_profile_domain_delete') && is_array($sip_profile_domains_delete) && @sizeof($sip_profile_domains_delete) != 0 ) { $obj = new sip_profiles; $obj->sip_profile_uuid = $sip_profile_uuid; $obj->delete_domains($sip_profile_domains_delete); } //remove checked settings if ( $action == 'update' && permission_exists('sip_profile_setting_delete') && is_array($sip_profile_settings_delete) && @sizeof($sip_profile_settings_delete) != 0 ) { $obj = new sip_profiles; $obj->sip_profile_uuid = $sip_profile_uuid; $obj->delete_settings($sip_profile_settings_delete); } //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'); } } //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 if (permission_exists('sip_profile_setting_add')) { $x = count($sip_profile_settings); $sip_profile_settings[$x]['sip_profile_setting_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 if (permission_exists('sip_profile_domain_add')) { $x = count($sip_profile_domains); $sip_profile_domains[$x]['sip_profile_domain_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 "
".$text['title-sip_profile']."
\n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','link'=>'sip_profiles.php']); $button_margin = 'margin-left: 15px;'; if ($action == 'update') { if ( permission_exists('dialplan_add') || permission_exists('inbound_route_add') || permission_exists('outbound_route_add') || permission_exists('time_condition_add') ) { echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'name'=>'btn_copy','style'=>$button_margin,'onclick'=>"modal_open('modal-copy','new_profile_name');"]); unset($button_margin); } if ( permission_exists('sip_profile_delete') || permission_exists('sip_profile_domain_delete') || permission_exists('sip_profile_setting_delete') ) { echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'name'=>'btn_delete','style'=>$button_margin,'onclick'=>"modal_open('modal-delete','btn_delete');"]); unset($button_margin); } } echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','style'=>'margin-left: 15px;']); echo "
\n"; echo "
\n"; echo "
\n"; if ($action == 'update') { if ( permission_exists('dialplan_add') || permission_exists('inbound_route_add') || permission_exists('outbound_route_add') || permission_exists('time_condition_add') ) { echo modal::create([ 'id'=>'modal-copy', 'type'=>'general', 'message'=>$text['label-new_sip_profile_name']."...

", 'actions'=>button::create([ 'type'=>'button', 'label'=>$text['button-continue'], 'icon'=>'check', 'id'=>'btn_copy', 'style'=>'float: right; margin-left: 15px;', 'collapse'=>'never', 'onclick'=>"modal_close(); if (document.getElementById('new_profile_name').value != '') { window.location='sip_profile_copy.php?id=".urlencode($sip_profile_uuid)."&name=' + document.getElementById('new_profile_name').value; }" ]), 'onclose'=>"document.getElementById('new_profile_name').value = '';", ]); } if ( permission_exists('sip_profile_delete') || permission_exists('sip_profile_domain_delete') || permission_exists('sip_profile_setting_delete') ) { echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]); } } 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 " ".$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"; if ( permission_exists('sip_profile_domain_delete') && ( (permission_exists('sip_profile_domain_add') && is_array($sip_profile_domains) && @sizeof($sip_profile_domains) > 1) || (!permission_exists('sip_profile_domain_add') && is_array($sip_profile_domains) && @sizeof($sip_profile_domains) != 0) )) { echo " \n"; } echo " \n"; $x = 0; foreach ($sip_profile_domains as $row) { $bottom_border = !is_uuid($row['sip_profile_domain_uuid']) ? "border-bottom: none;" : null; echo " \n"; if (is_uuid($row["sip_profile_uuid"])) { $sip_profile_uuid = $row["sip_profile_uuid"]; } echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (permission_exists('sip_profile_domain_delete')) { if (is_uuid($row['sip_profile_domain_uuid'])) { echo " \n"; } echo " \n"; //convert last empty labels to form elements if (permission_exists('sip_profile_domain_add') && !is_uuid($row["sip_profile_domain_uuid"])) { echo "\n"; } $x++; } echo "
".$text['label-sip_profile_domain_name']."".$text['label-sip_profile_domain_alias']."".$text['label-sip_profile_domain_parse']."\n"; echo " ".$text['label-delete']."\n"; echo " \n"; echo "
\n"; echo "   \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " "; echo " \n"; echo " \n"; } else { echo " \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"; if ( permission_exists('sip_profile_setting_delete') && ( (permission_exists('sip_profile_setting_add') && is_array($sip_profile_settings) && @sizeof($sip_profile_settings) > 1) || (!permission_exists('sip_profile_setting_add') && is_array($sip_profile_settings) && @sizeof($sip_profile_settings) != 0) )) { echo " \n"; } echo " \n"; $x = 0; foreach ($sip_profile_settings as $row) { $bottom_border = !is_uuid($row['sip_profile_setting_uuid']) ? "border-bottom: none;" : null; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (permission_exists('sip_profile_setting_delete')) { if (is_uuid($row['sip_profile_setting_uuid'])) { echo " \n"; } echo " \n"; //convert last empty labels to form elements if (permission_exists('sip_profile_setting_add') && !is_uuid($row["sip_profile_setting_uuid"])) { 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 " ".$text['label-delete']."\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 " \n"; echo " \n"; } else { echo " \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 "
"; echo "

"; if ($action == "update") { echo "\n"; } echo "\n"; echo "
"; //include the footer require_once "resources/footer.php"; ?>