Portions created by the Initial Developer are Copyright (C) 2008-2012 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; if (permission_exists('conference_add') || permission_exists('conference_edit')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support require_once "app_languages.php"; foreach($text as $key => $value) { $text[$key] = $value[$_SESSION['domain']['language']['code']]; } //action add or update if (isset($_REQUEST["id"])) { $action = "update"; $conference_uuid = check_str($_REQUEST["id"]); } else { $action = "add"; } //get http post variables and set them to php variables if (count($_POST)>0) { $dialplan_uuid = check_str($_POST["dialplan_uuid"]); $conference_name = check_str($_POST["conference_name"]); $conference_extension = check_str($_POST["conference_extension"]); $conference_pin_number = check_str($_POST["conference_pin_number"]); $conference_profile = check_str($_POST["conference_profile"]); $conference_flags = check_str($_POST["conference_flags"]); $conference_order = check_str($_POST["conference_order"]); $conference_description = check_str($_POST["conference_description"]); $conference_enabled = check_str($_POST["conference_enabled"]); //sanitize the conference name $conference_name = preg_replace("/[^A-Za-z0-9\- ]/", "", $conference_name); $conference_name = str_replace(" ", "-", $conference_name); } //delete the user from the v_conference_users if ($_GET["a"] == "delete" && permission_exists("conference_delete")) { //set the variables $user_uuid = check_str($_REQUEST["user_uuid"]); $conference_uuid = check_str($_REQUEST["id"]); //delete the group from the users $sql = "delete from v_conference_users "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and conference_uuid = '".$conference_uuid."' "; $sql .= "and user_uuid = '".$user_uuid."' "; $db->exec(check_sql($sql)); $_SESSION["message"] = $text['confirm-delete']; header("Location: conference_edit.php?id=".$conference_uuid); return; } //add the user to the v_conference_users if (strlen($_REQUEST["user_uuid"]) > 0 && strlen($_REQUEST["id"]) > 0 && $_GET["a"] != "delete") { //set the variables $user_uuid = check_str($_REQUEST["user_uuid"]); $conference_uuid = check_str($_REQUEST["id"]); //assign the user to the extension $sql_insert = "insert into v_conference_users "; $sql_insert .= "("; $sql_insert .= "conference_user_uuid, "; $sql_insert .= "domain_uuid, "; $sql_insert .= "conference_uuid, "; $sql_insert .= "user_uuid "; $sql_insert .= ")"; $sql_insert .= "values "; $sql_insert .= "("; $sql_insert .= "'".uuid()."', "; $sql_insert .= "'".$_SESSION['domain_uuid']."', "; $sql_insert .= "'".$conference_uuid."', "; $sql_insert .= "'".$user_uuid."' "; $sql_insert .= ")"; $db->exec($sql_insert); $_SESSION["message"] = $text['confirm-add']; header("Location: conference_edit.php?id=".$conference_uuid); return; } if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $msg = ''; if ($action == "update") { $conference_uuid = check_str($_POST["conference_uuid"]); } //check for all required data //if (strlen($dialplan_uuid) == 0) { $msg .= "Please provide: Dialplan UUID
\n"; } if (strlen($conference_name) == 0) { $msg .= "".$text['confirm-name']."
\n"; } if (strlen($conference_extension) == 0) { $msg .= "".$text['confirm-extension']."
\n"; } //if (strlen($conference_pin_number) == 0) { $msg .= "Please provide: Pin Number
\n"; } if (strlen($conference_profile) == 0) { $msg .= "".$text['confirm-profile']."
\n"; } //if (strlen($conference_flags) == 0) { $msg .= "Please provide: Flags
\n"; } //if (strlen($conference_order) == 0) { $msg .= "Please provide: Order
\n"; } //if (strlen($conference_description) == 0) { $msg .= "Please provide: Description
\n"; } if (strlen($conference_enabled) == 0) { $msg .= "".$text['confirm-enabled']."
\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 or update the database if ($_POST["persistformvar"] != "true") { if ($action == "add") { //prepare the uuids $conference_uuid = uuid(); $dialplan_uuid = uuid(); //add the conference $sql = "insert into v_conferences "; $sql .= "("; $sql .= "domain_uuid, "; $sql .= "conference_uuid, "; $sql .= "dialplan_uuid, "; $sql .= "conference_name, "; $sql .= "conference_extension, "; $sql .= "conference_pin_number, "; $sql .= "conference_profile, "; $sql .= "conference_flags, "; $sql .= "conference_order, "; $sql .= "conference_description, "; $sql .= "conference_enabled "; $sql .= ")"; $sql .= "values "; $sql .= "("; $sql .= "'$domain_uuid', "; $sql .= "'$conference_uuid', "; $sql .= "'$dialplan_uuid', "; $sql .= "'$conference_name', "; $sql .= "'$conference_extension', "; $sql .= "'$conference_pin_number', "; $sql .= "'$conference_profile', "; $sql .= "'$conference_flags', "; $sql .= "'$conference_order', "; $sql .= "'$conference_description', "; $sql .= "'$conference_enabled' "; $sql .= ")"; $db->exec(check_sql($sql)); unset($sql); //create the dialplan entry $dialplan_name = $conference_name; $dialplan_order ='333'; $dialplan_context = $_SESSION['context']; $dialplan_enabled = 'true'; $dialplan_description = $conference_description; $app_uuid = 'b81412e8-7253-91f4-e48e-42fc2c9a38d9'; dialplan_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_name, $dialplan_order, $dialplan_context, $dialplan_enabled, $dialplan_description, $app_uuid); // $dialplan_detail_tag = 'condition'; //condition, action, antiaction $dialplan_detail_type = 'destination_number'; $dialplan_detail_data = '^'.$conference_extension.'$'; $dialplan_detail_order = '000'; $dialplan_detail_group = '2'; dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); // $dialplan_detail_tag = 'action'; //condition, action, antiaction $dialplan_detail_type = 'answer'; $dialplan_detail_data = ''; $dialplan_detail_order = '010'; $dialplan_detail_group = '2'; dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); // $dialplan_detail_tag = 'action'; //condition, action, antiaction $dialplan_detail_type = 'conference'; $pin_number = ''; if (strlen($conference_pin_number) > 0) { $pin_number = "+".$conference_pin_number; } $flags = ''; if (strlen($conference_flags) > 0) { $flags = "+flags{".$conference_flags."}"; } $dialplan_detail_data = $conference_name.'-'.$_SESSION['domain_name']."@".$conference_profile.$pin_number.$flags; $dialplan_detail_order = '020'; $dialplan_detail_group = '2'; dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); $_SESSION["message"] = $text['confirm-add']; } //if ($action == "add") if ($action == "update") { //update the conference extension $sql = "update v_conferences set "; $sql .= "conference_name = '$conference_name', "; $sql .= "conference_extension = '$conference_extension', "; $sql .= "conference_pin_number = '$conference_pin_number', "; $sql .= "conference_profile = '$conference_profile', "; $sql .= "conference_flags = '$conference_flags', "; $sql .= "conference_order = '$conference_order', "; $sql .= "conference_description = '$conference_description', "; $sql .= "conference_enabled = '$conference_enabled' "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and conference_uuid = '$conference_uuid'"; $db->exec(check_sql($sql)); unset($sql); //udpate the conference dialplan $sql = "update v_dialplans set "; $sql .= "dialplan_name = '$conference_name', "; if (strlen($dialplan_order) > 0) { $sql .= "dialplan_order = '333', "; } $sql .= "dialplan_context = '".$_SESSION['context']."', "; $sql .= "dialplan_enabled = 'true', "; $sql .= "dialplan_description = '$conference_description' "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and dialplan_uuid = '$dialplan_uuid' "; $db->query($sql); unset($sql); //update dialplan detail condition $sql = "update v_dialplan_details set "; $sql .= "dialplan_detail_data = '^".$conference_extension."$' "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and dialplan_detail_tag = 'condition' "; $sql .= "and dialplan_detail_type = 'destination_number' "; $sql .= "and dialplan_uuid = '$dialplan_uuid' "; $db->query($sql); unset($sql); //update dialplan detail action $pin_number = ''; if (strlen($conference_pin_number) > 0) { $pin_number = "+".$conference_pin_number; } $flags = ''; if (strlen($conference_flags) > 0) { $flags = "+flags{".$conference_flags."}"; } $dialplan_detail_data = $conference_name.'-'.$_SESSION['domain_name']."@".$conference_profile.$pin_number.$flags; $sql = "update v_dialplan_details set "; $sql .= "dialplan_detail_data = '".$dialplan_detail_data."' "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and dialplan_detail_tag = 'action' "; $sql .= "and dialplan_detail_type = 'conference' "; $sql .= "and dialplan_uuid = '$dialplan_uuid' "; $db->query($sql); $_SESSION["message"] = $text['confirm-update']; } //if ($action == "update") //save the xml save_dialplan_xml(); //apply settings reminder $_SESSION["reload_xml"] = true; //delete the dialplan context from memcache $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); if ($fp) { $switch_cmd = "memcache delete dialplan:".$_SESSION["context"]."@".$_SESSION['domain_name']; $switch_result = event_socket_request($fp, 'api '.$switch_cmd); } header("Location: conferences.php"); return; } //if ($_POST["persistformvar"] != "true") } //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) //pre-populate the form if (count($_GET)>0 && $_POST["persistformvar"] != "true") { $conference_uuid = $_GET["id"]; $sql = "select * from v_conferences "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and conference_uuid = '$conference_uuid' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(); foreach ($result as &$row) { $dialplan_uuid = $row["dialplan_uuid"]; $conference_name = $row["conference_name"]; $conference_extension = $row["conference_extension"]; $conference_pin_number = $row["conference_pin_number"]; $conference_profile = $row["conference_profile"]; $conference_flags = $row["conference_flags"]; $conference_order = $row["conference_order"]; $conference_description = $row["conference_description"]; $conference_enabled = $row["conference_enabled"]; $conference_name = str_replace("-", " ", $conference_name); } unset ($prep_statement); } //set defaults if (strlen($conference_enabled) == 0) { $conference_enabled = "true"; } //show the header require_once "resources/header.php"; //show the content echo "
"; echo "\n"; echo "\n"; echo " "; echo " "; echo "
\n"; echo "
"; echo "
\n"; echo "
\n"; echo "\n"; echo "\n"; if ($action == "add") { echo "\n"; } if ($action == "update") { 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"; if (if_group("admin") || if_group("superadmin")) { if ($action == "update") { echo " "; echo " "; echo " "; echo " "; } } 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['label-conference-add']."".$text['label-conference-edit']."
\n"; echo "".$text['description']." \n"; echo "Click on ".$text['title-3']." \n"; echo "".$text['description-3']."

\n"; echo "
\n"; echo " ".$text['label-name'].":\n"; echo "\n"; echo " \n"; echo "
\n"; echo "".$text['description-name']."\n"; echo "
\n"; echo " ".$text['label-extension'].":\n"; echo "\n"; echo " \n"; echo "
\n"; echo "".$text['description-extension']."\n"; echo "
\n"; echo " ".$text['label-pin'].":\n"; echo "\n"; echo " \n"; echo "
\n"; echo "".$text['description-pin']."\n"; echo "
User List:"; echo " \n"; $sql = "SELECT * FROM v_conference_users as e, v_users as u "; $sql .= "where e.user_uuid = u.user_uuid "; $sql .= "and u.user_enabled = 'true' "; $sql .= "and e.domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and e.conference_uuid = '".$conference_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); $result_count = count($result); foreach($result as $field) { echo " \n"; echo " \n"; echo " \n"; echo " \n"; } echo "
".$field['username']."\n"; echo " $v_link_label_delete\n"; echo "
\n"; echo "
\n"; $sql = "SELECT * FROM v_users "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and user_enabled = 'true' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); echo " "; echo " \n"; unset($sql, $result); echo "
\n"; echo " ".$text['description-user-add']."\n"; echo "
\n"; echo "
\n"; echo " ".$text['table-profile'].":\n"; echo "\n"; echo " \n"; echo "
\n"; echo "".$text['description-profile']."\n"; echo "
\n"; echo " Flags:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "".$text['description-flags']."\n"; echo "
\n"; echo " ".$text['label-order'].":\n"; echo "\n"; echo " \n"; echo "
\n"; echo "".$text['description-order']."\n"; echo "
\n"; echo " ".$text['table-enabled'].":\n"; echo "\n"; echo " \n"; echo "
\n"; echo "".$text['description-conference-enable']."\n"; echo "
\n"; echo " ".$text['label-description'].":\n"; echo "\n"; echo " \n"; echo "
\n"; echo "".$text['description-info']."\n"; echo "
\n"; if ($action == "update") { echo " \n"; echo " \n"; } echo " \n"; echo "
"; echo ""; echo "
"; echo "
"; //include the footer require_once "resources/footer.php"; ?>