diff options
-rw-r--r-- | config/freeswitch/freeswitch.inc | 361 | ||||
-rw-r--r-- | config/freeswitch/freeswitch.xml | 2 | ||||
-rw-r--r-- | config/freeswitch/freeswitch_dialplan_includes_edit.tmp | 16 | ||||
-rw-r--r-- | config/freeswitch/freeswitch_extensions_edit.tmp | 80 | ||||
-rw-r--r-- | config/freeswitch/freeswitch_features.tmp | 14 | ||||
-rw-r--r-- | config/freeswitch/freeswitch_hunt_group.tmp | 174 | ||||
-rw-r--r-- | config/freeswitch/freeswitch_hunt_group_destinations.tmp | 52 | ||||
-rw-r--r-- | config/freeswitch/freeswitch_hunt_group_destinations_edit.tmp | 230 | ||||
-rw-r--r-- | config/freeswitch/freeswitch_hunt_group_edit.tmp | 412 | ||||
-rwxr-xr-x | pkg_config.7.xml | 2 |
10 files changed, 1287 insertions, 56 deletions
diff --git a/config/freeswitch/freeswitch.inc b/config/freeswitch/freeswitch.inc index 4e0ab1ab..fc222125 100644 --- a/config/freeswitch/freeswitch.inc +++ b/config/freeswitch/freeswitch.inc @@ -65,6 +65,10 @@ function build_menu() { if ($_SERVER["SCRIPT_NAME"] == "/packages/freeswitch/freeswitch_ivr_options_edit.php") { $menu_selected = true; } if ($_SERVER["SCRIPT_NAME"] == "/packages/freeswitch/freeswitch_recordings.php") { $menu_selected = true; } if ($_SERVER["SCRIPT_NAME"] == "/packages/freeswitch/freeswitch_recordings_edit.php") { $menu_selected = true; } + if ($_SERVER["SCRIPT_NAME"] == "/packages/freeswitch/freeswitch_hunt_group.php") { $menu_selected = true; } + if ($_SERVER["SCRIPT_NAME"] == "/packages/freeswitch/freeswitch_hunt_group_edit.php") { $menu_selected = true; } + if ($_SERVER["SCRIPT_NAME"] == "/packages/freeswitch/freeswitch_hunt_group_destinations.php") { $menu_selected = true; } + if ($_SERVER["SCRIPT_NAME"] == "/packages/freeswitch/freeswitch_hunt_group_destinations_edit.php") { $menu_selected = true; } $tab_array[] = array(gettext("Features"), $menu_selected, "/packages/freeswitch/freeswitch_features.php"); unset($menu_selected); @@ -963,6 +967,339 @@ function sync_package_freeswitch_external() } +function sync_package_freeswitch_hunt_group() +{ + + //Hunt Group Javascript Notes: + //get the domain + //loop through all Hunt Groups + //get the Hunt Group information such as the name and description + //add each Hunt Group to the dialplan + //get the list of destinations then build the Hunt Group javascript + + + global $config; + conf_mount_rw(); + config_lock(); + + + //get the domain + $password = $config['installedpackages']['freeswitchsettings']['config'][0]['event_socket_password']; + $host = $config['interfaces']['lan']['ipaddr']; + $port = $config['installedpackages']['freeswitchsettings']['config'][0]['event_socket_port']; + + if (pkg_is_service_running('freeswitch')) { + $fp = event_socket_create($host, $port, $password); + $cmd = "api global_getvar domain"; + $domain = trim(event_socket_request($fp, $cmd)); + } + + $tmp = ""; + $tmp .= "\n"; + $tmp .= " var domain = \"".$domain."\"; //by default this is the ipv4 address of FreeSWITCH used for transfer to voicemail\n"; + //$tmp .= " var exit = false;\n"; + $tmp .= "\n"; + $tmp .= "\n"; + + //loop through all Hunt Groups + $a_hunt_group = &$config['installedpackages']['freeswitchhuntgroup']['config']; + if (count($a_hunt_group) > 0) { + foreach($a_hunt_group as $rowhelper) { + + //get the Hunt Group information such as the name and description + //$rowhelper['huntgroupid'] + //$rowhelper['huntgroupextension'] + //$rowhelper['huntgroupname'] + //$rowhelper['huntgrouptype'] + //$rowhelper['huntgrouptimeout'] + //$rowhelper['huntgroupcontext'] + //$rowhelper['huntgroupdescr'] + + //add each Hunt Group to the dialplan + $a_dialplan_includes = &$config['installedpackages']['freeswitchdialplanincludes']['config']; + $a_dialplan_include_details = &$config['installedpackages']['freeswitchdialplanincludedetails']['config']; + + + if (strlen($rowhelper['huntgroupid']) > 0) { + $action = 'add'; //set default action to add + $i = 0; + if (count($a_dialplan_includes) > 0) { + + foreach($a_dialplan_includes as $row) { + + //$row['dialplanincludeid']; + //$row['extensionname']; + //$row['context']; + //$row['enabled']; + + if ($row['opt1name'] == "huntgroupid" && $row['opt1value'] == $rowhelper['huntgroupid']) { + //update + $action = 'update'; + $dialplanincludeid = $row['dialplanincludeid']; + $extensionname = $row['extensionname']; + $order = $row['order']; + $context = $row['context']; + $enabled = $row['enabled']; + $descr = $row['descr']; + $opt1name = $row['opt1name']; + $opt1value = $row['opt1value']; + $id = $i; + //echo "update".$i."<br />\n"; + + } + $i++; + + } + } + + + $ent = array(); + if ($action == 'add') { + + $dialplanincludeid = guid(); + $ent['dialplanincludeid'] = $dialplanincludeid; + $ent['extensionname'] = $rowhelper['ivrextension']; + $ent['order'] = '9001'; //if update use the existing order number and extension name and desc + $ent['context'] = $rowhelper['huntgroupcontext']; + $ent['enabled'] = 'true'; + $ent['descr'] = 'huntgroup'; + $ent['opt1name'] = 'huntgroupid'; + $ent['opt1value'] = $rowhelper['huntgroupid']; + + //add to the config + $a_dialplan_includes[] = $ent; + unset($ent); + + $ent = array(); + $ent['dialplanincludeid'] = $dialplanincludeid; + $ent['tag'] = 'condition'; //condition, action, antiaction + $ent['fieldtype'] = 'destination_number'; + $ent['fielddata'] = '^'.$rowhelper['huntgroupextension'].'$'; + $a_dialplan_include_details[] = $ent; + unset($ent); + + $huntgroupid = str_replace(array("{", "}"), "", $rowhelper['huntgroupid']); + + $ent = array(); + $ent['dialplanincludeid'] = $dialplanincludeid; + $ent['tag'] = 'action'; //condition, action, antiaction + $ent['fieldtype'] = 'javascript'; + $ent['fielddata'] = 'huntgroup_'.$huntgroupid.'.js'; + $a_dialplan_include_details[] = $ent; + unset($ent); + + unset($huntgroupid); + + } + if ($action == 'update') { + + $ent['dialplanincludeid'] = $dialplanincludeid; + $ent['extensionname'] = $rowhelper['huntgroupextension']; + $ent['order'] = $order; + $ent['context'] = $context; + $ent['enabled'] = $enabled; + $ent['descr'] = $descr; + $ent['opt1name'] = $opt1name; + $ent['opt1value'] = $opt1value; + + //update the config + $a_dialplan_includes[$id] = $ent; + + unset($ent); + unset($extensionname); + unset($order); + unset($context); + unset($enabled); + unset($descr); + unset($opt1name); + unset($opt1value); + unset($id); + } + write_config(); + + sync_package_freeswitch_dialplan_includes(); + unset($dialplanincludeid); + + } //end if strlen huntgroupid; add the Hunt Group to the dialplan + + //Get the list of destinations then build the Hunt Group javascript + $tmp = ""; + $tmp .= " function get_sofia_contact(extension,domain_name){\n"; + $tmp .= " session.execute(\"set\", \"sofia_contact_\"+extension+\"=\${sofia_contact(internal/\"+extension+\"@\"+domain_name+\")}\");\n"; + $tmp .= " sofia_contact = session.getVariable(\"sofia_contact_\"+extension);\n"; + $tmp .= " //console_log( \"info\", \"sofia_contact: \"+sofia_contact+\".\\n\" );\n"; + $tmp .= " return sofia_contact;\n"; + $tmp .= " }\n"; + $tmp .= "\n"; + $tmp .= " dialed_extension = session.getVariable(\"dialed_extension\");\n"; + $tmp .= " domain_name = session.getVariable(\"domain_name\");\n"; + $tmp .= " domain = session.getVariable(\"domain\");\n"; + $tmp .= " us_ring = session.getVariable(\"us-ring\");\n"; + $tmp .= " caller_id_name = session.getVariable(\"caller_id_name\");\n"; + $tmp .= " caller_id_number = session.getVariable(\"caller_id_number\");\n"; + $tmp .= "\n"; + $tmp .= " session.execute(\"set\", \"ringback=\"+us_ring); //set to ringtone\n"; + $tmp .= " session.execute(\"set\", \"transfer_ringback=\"+us_ring); //set to ringtone\n"; + if ($rowhelper['huntgrouptimeout'] > 0) { + $tmp .= " session.execute(\"set\", \"call_timeout=".$rowhelper['huntgrouptimeout']."\");\n"; + $tmp .= " session.execute(\"set\", \"continue_on_fail=true\");\n"; + } + $tmp .= " session.execute(\"set\", \"hangup_after_bridge=true\");\n"; + $tmp .= "\n"; + $tmp .= " //console_log( \"info\", \"dialed extension:\"+dialed_extension+\".\\n\" );\n"; + $tmp .= " //console_log( \"info\", \"domain: \"+domain+\".\\n\" );\n"; + $tmp .= " //console_log( \"info\", \"us_ring: \"+us_ring+\".\\n\" );\n"; + $tmp .= " //console_log( \"info\", \"domain: \"+domain+\".\\n\" );\n"; + $tmp .= " //console_log( \"info\", \"domain_name: \"+domain_name+\".\\n\" );\n"; + $tmp .= "\n"; + + $tmp .= " //console_log( \"info\", \"action call now don't wait for dtmf\\n\" );\n"; + $tmp .= " if ( session.ready() ) {\n"; + $tmp .= " session.answer();\n"; + $tmp .= "\n"; + + $a_hunt_group = &$config['installedpackages']['freeswitchhuntgroup']['config']; + if (isset($id) && $a_hunt_group[0]) { + $huntgrouptimeout = $a_hunt_group[$id]['huntgrouptimeout']; + $huntgrouptimeoutdestination = $a_hunt_group[$id]['huntgrouptimeoutdestination']; + } + + //order the array + function cmp_hunt_group_order($a, $b) { + if ($a["destinationorder"] > $b["destinationorder"]) { + return 1; + } + else { + return 0; + } + } + + + $a_hunt_group_destinations = &$config['installedpackages']['freeswitchhuntgroupdestinations']['config']; + if (count($a_hunt_group_destinations) > 0) { usort($a_hunt_group_destinations, "cmp_hunt_group_order"); } + if (count($a_hunt_group_destinations) > 0) { + $x = 0; + foreach($a_hunt_group_destinations as $row) { + + /* + $row['huntgroupid'] + $row['destinationnumber'] + $row['destinationtype'] + $row['destinationorder'] + $row['destinationdescr'] + */ + + if ($row['huntgroupid'] == $rowhelper['huntgroupid']) { + + if ($row['destinationtype'] == "extension") { + //$tmp .= " session.execute(\"transfer\", \"".$row['destinationnumber']." XML default\"); //".$row['destinationdescr']."\n"; + $tmp .= " sofia_contact_".$row['destinationnumber']." = get_sofia_contact(\"".$row['destinationnumber']."\",domain_name);\n"; + $tmp_sub_array["application"] = "bridge"; + $tmp_sub_array["data"] = "sofia_contact_".$row['destinationnumber']; + $tmp_array[$x] = $tmp_sub_array; + unset($tmp_sub_array); + } + if ($row['destinationtype'] == "voicemail") { + //$tmp .= " session.execute(\"voicemail\", \"".$row['destinationnumber']." XML default\");\n"; + $tmp .= " session.execute(\"voicemail\", \"default \"+domain+\" ".$row['destinationnumber']."\");\n"; + $tmp_sub_array["application"] = "voicemail"; + $tmp_sub_array["data"] = "default \"+domain+\" ".$row['destinationnumber']; + $tmp_array[$x] = $tmp_sub_array; + unset($tmp_sub_array); + } + if ($row['destinationtype'] == "sip uri") { + //$tmp .= " session.execute(\"transfer\", \"".$row['destinationnumber']." XML default\"); //".$row['destinationdescr']."\n"; + //tmp .= " sofia_contact_".$row['destinationnumber']." = get_sofia_contact(\"".$row['destinationnumber']."\",domain_name);\n"; + $tmp_sub_array["application"] = "bridge"; + $tmp_sub_array["data"] = "\"".$row['destinationnumber']."\""; + $tmp_array[$x] = $tmp_sub_array; + unset($tmp_sub_array); + } + $x++; + + } //end huntgroupid + + } //end for each + unset($x); + } //if count + + + + switch ($rowhelper['huntgrouptype']) { + case "simultaneous": + //print_r($tmp_array); + $x = 0; + foreach ($tmp_array as $row) { + if ($x < 1) { + $tmp_buffer = $row["data"]; + } + else { + $tmp_buffer .= "+\",\"+".$row["data"]; + } + $x++; + } + + $delimiter = ","; + + $tmp_application = $tmp_array[0]["application"]; + $tmp .= "\n"; + $tmp .= " session.execute(\"".$tmp_application."\", $tmp_buffer);\n"; + //$tmp .= " session.execute(\"bridge\", sofia_contact_100+\",\"+sofia_contact_101+\",\"+sofia_contact_102+\",\"+sofia_contact_103+\",\"+sofia_contact_104);\n"; + //$tmp .= " //session.execute(\"bridge\", \"sofia/gateway/flowroute.com/12081231234,\"+sofia_contact_101);\n"; + + break; + case "sequentially": + + $tmp .= "\n"; + //print_r($tmp_array); + $x = 0; + foreach ($tmp_array as $row) { + $tmp .= " session.execute(\"".$row["application"]."\", ".$row["data"].");\n"; + } + + break; + } + + + //set the timeout destination + $huntgrouptimeoutdestination = $a_hunt_group[0]['huntgrouptimeoutdestination']; + $huntgrouptimeouttype = $a_hunt_group[0]['huntgrouptimeouttype']; + if ($row['huntgrouptimeouttype'] == "extension") { $huntgrouptimeouttype = "bridge"; } + if ($row['huntgrouptimeouttype'] == "voicemail") { $huntgrouptimeouttype = "voicemail"; } + if ($row['huntgrouptimeouttype'] == "sip uri") { $huntgrouptimeouttype = "bridge"; } + $tmp .= "\n"; + $tmp .= " //timeout\n"; + $tmp .= " session.execute(\"".$huntgrouptimeouttype."\", \"default \"+domain+\" ".$huntgrouptimeoutdestination."\" );\n"; + + + $tmp .= "\n"; + $tmp .= " //clear variables\n"; + $tmp .= " dialed_extension = \"\";\n"; + $tmp .= " new_extension = \"\";\n"; + $tmp .= " domain_name = \"\";\n"; + $tmp .= " domain = \"\";"; + + $tmp .= "\n"; + $tmp .= " } //end if session.ready\n"; + $tmp .= "\n"; + + if (strlen($rowhelper['huntgroupid']) > 0) { + $huntgroupfilename = "huntgroup_".str_replace(array("{", "}"), "", $rowhelper['huntgroupid']).".js"; + $fout = fopen("/usr/local/freeswitch/scripts/".$huntgroupfilename,"w"); + fwrite($fout, $tmp); + unset($huntgroupfilename); + fclose($fout); + } + + + } //end foreach + } //end if count + conf_mount_ro(); + config_unlock(); + +} //end function + + function get_recording_filename($id) { global $config; @@ -1189,9 +1526,9 @@ function sync_package_freeswitch_ivr() if ($row['optionaction'] == "action") { $actioncount++; if (strtolower($row['optionnumber']) == "n") { //direct the call now don't wait for dtmf - $actiondirect = true; - $actiondirecttype = $row['optiontype']; - $actiondirectdest = $row['optiondest']; + $actiondirect = true; + $actiondirecttype = $row['optiontype']; + $actiondirectdest = $row['optiondest']; } } } @@ -1828,7 +2165,7 @@ function sync_package_freeswitch() function freeswitch_php_install_command() { global $config; - $freeswitch_package_version = "0.8.7.5"; + $freeswitch_package_version = "0.8.8"; $freeswitch_build_version = "1.0.4 pre 6"; $freeswitch_build_revision = "13238"; @@ -1967,6 +2304,22 @@ function freeswitch_php_install_command() exec("cd /tmp/;fetch http://www.pfsense.com/packages/config/freeswitch/freeswitch_gateways_edit.tmp"); exec("cp /tmp/freeswitch_gateways_edit.tmp /usr/local/www/packages/freeswitch/freeswitch_gateways_edit.php"); unlink_if_exists("/tmp/freeswitch_gateways_edit.tmp"); + + exec("cd /tmp/;fetch http://www.pfsense.com/packages/config/freeswitch/freeswitch_hunt_group.tmp"); + exec("cp /tmp/freeswitch_hunt_group.tmp /usr/local/www/packages/freeswitch/freeswitch_hunt_group.php"); + unlink_if_exists("/tmp/freeswitch_hunt_group.tmp"); + + exec("cd /tmp/;fetch http://www.pfsense.com/packages/config/freeswitch/freeswitch_hunt_group_edit.tmp"); + exec("cp /tmp/freeswitch_hunt_group_edit.tmp /usr/local/www/packages/freeswitch/freeswitch_hunt_group_edit.php"); + unlink_if_exists("/tmp/freeswitch_hunt_group_edit.tmp"); + + exec("cd /tmp/;fetch http://www.pfsense.com/packages/config/freeswitch/freeswitch_hunt_group_destinations.tmp"); + exec("cp /tmp/freeswitch_hunt_group_destinations.tmp /usr/local/www/packages/freeswitch/freeswitch_hunt_group_destinations.php"); + unlink_if_exists("/tmp/freeswitch_hunt_group_destinations.tmp"); + + exec("cd /tmp/;fetch http://www.pfsense.com/packages/config/freeswitch/freeswitch_hunt_group_destinations_edit.tmp"); + exec("cp /tmp/freeswitch_hunt_group_destinations_edit.tmp /usr/local/www/packages/freeswitch/freeswitch_hunt_group_destinations_edit.php"); + unlink_if_exists("/tmp/freeswitch_hunt_group_destinations_edit.tmp"); exec("cd /tmp/;fetch http://www.pfsense.com/packages/config/freeswitch/freeswitch_ivr.tmp"); exec("cp /tmp/freeswitch_ivr.tmp /usr/local/www/packages/freeswitch/freeswitch_ivr.php"); diff --git a/config/freeswitch/freeswitch.xml b/config/freeswitch/freeswitch.xml index a8e57203..fc191c21 100644 --- a/config/freeswitch/freeswitch.xml +++ b/config/freeswitch/freeswitch.xml @@ -44,7 +44,7 @@ <requirements>Describe your package requirements here</requirements> <faq>Currently there are no FAQ items provided.</faq> <name>FreeSWITCH Settings</name> - <version>0.8.7.5</version> + <version>0.8.8</version> <title>FreeSWITCH: Settings</title> <include_file>/usr/local/pkg/freeswitch.inc</include_file> <menu> diff --git a/config/freeswitch/freeswitch_dialplan_includes_edit.tmp b/config/freeswitch/freeswitch_dialplan_includes_edit.tmp index 1901608f..228ebab1 100644 --- a/config/freeswitch/freeswitch_dialplan_includes_edit.tmp +++ b/config/freeswitch/freeswitch_dialplan_includes_edit.tmp @@ -346,13 +346,13 @@ display_top_tabs(build_menu()); </td> </tr> - <?php + <?php $i = 0; if (count($a_dialplan_include_details) > 0) { foreach ($a_dialplan_include_details as $ent) { - if ($ent['tag'] == "condition" && $dialplanincludeid == $ent['dialplanincludeid']) { + if ($ent['tag'] == "condition" && $dialplanincludeid == $ent['dialplanincludeid']) { ?> <tr> <td class="listlr" ondblclick="document.location='freeswitch_dialplan_includes_details_edit.php?id=<?=$i;?>&parentid=<?=$parentid;?>&dialplanincludeid=<?=$dialplanincludeid;?>'"> @@ -373,9 +373,9 @@ display_top_tabs(build_menu()); </table> </td> </tr> - <?php - } - $i++; + <?php + } + $i++; } } @@ -404,7 +404,7 @@ display_top_tabs(build_menu()); </table> </td> </tr> - <?php + <?php } $i++; } @@ -435,7 +435,7 @@ display_top_tabs(build_menu()); </table> </td> </tr> - <?php + <?php } $i++; } @@ -466,7 +466,7 @@ display_top_tabs(build_menu()); </table> </td> </tr> - <?php + <?php } $i++; } diff --git a/config/freeswitch/freeswitch_extensions_edit.tmp b/config/freeswitch/freeswitch_extensions_edit.tmp index deb7a597..5cedd96d 100644 --- a/config/freeswitch/freeswitch_extensions_edit.tmp +++ b/config/freeswitch/freeswitch_extensions_edit.tmp @@ -204,22 +204,6 @@ display_top_tabs(build_menu()); <br><span class="vexpl">Enter the effective caller id number here.<br></span> </td> </tr> - <!-- - <tr> - <td width="25%" valign="top" class="vncellreq" nowrap>Outbound Caller ID Name</td> - <td width="75%" class="vtable"> - <input name="outbound_caller_id_name" type="text" class="formfld unknown" id="outbound_caller_id_name" size="40" value="<?=htmlspecialchars($pconfig['outbound_caller_id_name']);?>"> - <br><span class="vexpl">Enter the outbound caller id name here.<br></span> - </td> - </tr> - <tr> - <td width="25%" valign="top" class="vncellreq" nowrap>Outbound Caller ID Number</td> - <td width="75%" class="vtable"> - <input name="outbound_caller_id_number" type="text" class="formfld unknown" id="outbound_caller_id_number" size="40" value="<?=htmlspecialchars($pconfig['outbound_caller_id_number']);?>"> - <br><span class="vexpl">Enter the outbound caller id number here.<br></span> - </td> - </tr> - --> <tr> <td width="25%" valign="top" class="vncellreq" nowrap>Voicemail Mail To</td> <td width="75%" class="vtable"> @@ -269,32 +253,46 @@ display_top_tabs(build_menu()); </table> <div id="showadvancedbox"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td width="25%" valign="top" class="vncell">Show Advanced</td> - <td width="75%" class="vtable"> - <input type="button" onClick="show_advanced_config()" value="Advanced"></input></a> - </td> - </tr> - </table> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td width="25%" valign="top" class="vncell">Show Advanced</td> + <td width="75%" class="vtable"> + <input type="button" onClick="show_advanced_config()" value="Advanced"></input></a> + </td> + </tr> + </table> </div> <div id="showadvanced" style="display:none"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td width="25%" valign="top" class="vncell">Auth-ACL</td> - <td width="75%" class="vtable"> - <input name="auth-acl" type="text" class="formfld unknown" id="auth-acl" size="40" value="<?=htmlspecialchars($pconfig['auth-acl']);?>"> - <br> <span class="vexpl">Enter the auth acl here.<br></span> - </td> - </tr> - <tr> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td width="25%" valign="top" class="vncell">Auth-ACL</td> + <td width="75%" class="vtable"> + <input name="auth-acl" type="text" class="formfld unknown" id="auth-acl" size="40" value="<?=htmlspecialchars($pconfig['auth-acl']);?>"> + <br> <span class="vexpl">Enter the auth acl here.<br></span> + </td> + </tr> + <tr> <td valign="top" class="vncell">CIDR</td> - <td class="vtable"> - <input name="cidr" type="text" class="formfld unknown" id="cidr" size="40" value="<?=htmlspecialchars($pconfig['cidr']);?>"> - <br> <span class="vexpl">Enter the cidr here.<br></span> - </td> - </tr> - </table> + <td class="vtable"> + <input name="cidr" type="text" class="formfld unknown" id="cidr" size="40" value="<?=htmlspecialchars($pconfig['cidr']);?>"> + <br> <span class="vexpl">Enter the cidr here.<br></span> + </td> + </tr> + <tr> + <td width="25%" valign="top" class="vncell" nowrap>Outbound Caller ID Name</td> + <td width="75%" class="vtable"> + <input name="outbound_caller_id_name" type="text" class="formfld unknown" id="outbound_caller_id_name" size="40" value="<?=htmlspecialchars($pconfig['outbound_caller_id_name']);?>"> + <br><span class="vexpl">Enter the outbound caller id name here.<br></span> + </td> + </tr> + <tr> + <td width="25%" valign="top" class="vncell" nowrap>Outbound Caller ID Number</td> + <td width="75%" class="vtable"> + <input name="outbound_caller_id_number" type="text" class="formfld unknown" id="outbound_caller_id_number" size="40" value="<?=htmlspecialchars($pconfig['outbound_caller_id_number']);?>"> + <br><span class="vexpl">Enter the outbound caller id number here.<br></span> + </td> + </tr> + </table> </div> <table width="100%" border="0" cellpadding="6" cellspacing="0"> @@ -308,9 +306,7 @@ display_top_tabs(build_menu()); <tr> <td valign="top"> </td> <td> - <input name="outbound_caller_id_name" type="hidden" class="formfld" id="outbound_caller_id_name" size="40" value="<?=htmlspecialchars($pconfig['outbound_caller_id_name']);?>"> - <input name="outbound_caller_id_number" type="hidden" class="formfld unknown" id="outbound_caller_id_number" size="40" value="<?=htmlspecialchars($pconfig['outbound_caller_id_number']);?>"> - <input name="Submit" type="submit" class="formbtn" value="Save"> <input class="formbtn" type="button" value="Cancel" onclick="history.back()"> + <input name="Submit" type="submit" class="formbtn" value="Save"> <input class="formbtn" type="button" value="Cancel" onclick="history.back()"> <?php if (isset($id) && $a_extensions[$id]): ?> <input name="id" type="hidden" value="<?=$id;?>"> <?php endif; ?> diff --git a/config/freeswitch/freeswitch_features.tmp b/config/freeswitch/freeswitch_features.tmp index c55e4aa4..d97ebe9e 100644 --- a/config/freeswitch/freeswitch_features.tmp +++ b/config/freeswitch/freeswitch_features.tmp @@ -120,6 +120,20 @@ display_top_tabs(build_menu()); <br /> <br /> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td class="listtopic" colspan='2'>Hunt Group</td> + </tr> + <tr> + <td width='10%' class="vncell"><a href='freeswitch_hunt_group.php'>Open</a></td> + <td class="vtable"> + Hunt Group is a group of destinations to call at once or in succession. + </td> + </tr> + </table> + + <br /> + <br /> <table width="100%" border="0" cellpadding="6" cellspacing="0"> <tr> diff --git a/config/freeswitch/freeswitch_hunt_group.tmp b/config/freeswitch/freeswitch_hunt_group.tmp new file mode 100644 index 00000000..10a20eb8 --- /dev/null +++ b/config/freeswitch/freeswitch_hunt_group.tmp @@ -0,0 +1,174 @@ +<?php +/* $Id$ */ +/* + freeswitch_hunt_group.php + Copyright (C) 2008 Mark J Crane + All rights reserved. + + FreeSWITCH (TM) + http://www.freeswitch.org/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require("guiconfig.inc"); +require("/usr/local/pkg/freeswitch.inc"); + + +$a_hunt_group = &$config['installedpackages']['freeswitchhuntgroup']['config']; + + +if ($_GET['act'] == "del") { + if ($_GET['type'] == 'hunt_group') { + if ($a_hunt_group[$_GET['id']]) { + unlink("/usr/local/freeswitch/scripts/hunt_group_".$_GET['huntgroupid'].".js"); + unset($a_hunt_group[$_GET['id']]); + write_config(); + sync_package_freeswitch_hunt_group(); + header("Location: freeswitch_hunt_group.php"); + exit; + } + } +} + +include("head.inc"); + +?> + +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<?php include("fbegin.inc"); ?> +<p class="pgtitle">FreeSWITCH: Hunt Group</p> + +<div id="mainlevel"> +<table width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr><td class="tabnavtbl"> +<?php + +display_top_tabs(build_menu()); + +?> +</td></tr> +</table> + +<table width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td class="tabcont" > + +<form action="freeswitch_hunt_group.php" method="post" name="iform" id="iform"> + + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td><p><span class="vexpl"><span class="red"><strong>Hunt Group<br /> + </strong></span> + Hunt Group is a group of destinations to call at once or in succession. + </span></p></td> + </tr> + </table> + <br /> + + <table width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td width="20%" class="listhdrr">Extension</td> + <td width="25%" class="listhdrr">Name</td> + <td width="50%" class="listhdr">Description</td> + <td width="10%" class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td width="17"></td> + <td valign="middle"><a href="freeswitch_hunt_group_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td> + </tr> + </table> + </td> + </tr> + + <?php + $i = 0; + if (count($a_hunt_group) > 0) { + foreach ($a_hunt_group as $ent) { + if (strlen($ent['huntgroupid']) > 0) { + + $huntgroupid = str_replace(array("{", "}"), "", $ent['huntgroupid']); + + ?> + <tr> + <td class="listlr" ondblclick="document.location='freeswitch_hunt_group_edit.php?id=<?=$i;?>'"> + <?=$ent['huntgroupextension']?> + </td> + <td class="listr" ondblclick="document.location='freeswitch_hunt_group_edit.php?id=<?=$i;?>';"> + <?=$ent['huntgroupname'];?> + </td> + <td class="listbg" ondblclick="document.location='freeswitch_hunt_group_edit.php?id=<?=$i;?>';"> + <font color="#FFFFFF"><?=htmlspecialchars($ent['huntgroupdescr']);?> + </td> + <td valign="middle" nowrap class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td valign="middle"><a href="freeswitch_hunt_group_edit.php?id=<?=$i;?>&huntgroupid=<?php echo $ent['huntgroupid'];?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0"></a></td> + <td><a href="freeswitch_hunt_group.php?type=huntgroup&act=del&id=<?=$i;?>&huntgroupid=<?php echo $huntgroupid; ?>" onclick="return confirm('Do you really want to delete this?')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0"></a></td> + </tr> + </table> + </td> + </tr> + <?php + } + $i++; + } + } + ?> + <tr> + <td class="list" colspan="3"></td> + <td class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td width="17"></td> + <td valign="middle"><a href="freeswitch_hunt_group_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td> + </tr> + </table> + </td> + </tr> + + <tr> + <td class="list" colspan="3"></td> + <td class="list"></td> + </tr> + </table> + +</form> + +<br> +<br> +/usr/local/freeswitch/scripts/ +<br> +<br> +<br> +<br> + +</td> +</tr> +</table> + +</div> + + +<?php include("fend.inc"); ?> +</body> +</html> diff --git a/config/freeswitch/freeswitch_hunt_group_destinations.tmp b/config/freeswitch/freeswitch_hunt_group_destinations.tmp new file mode 100644 index 00000000..7f1adaf0 --- /dev/null +++ b/config/freeswitch/freeswitch_hunt_group_destinations.tmp @@ -0,0 +1,52 @@ +<?php +/* $Id$ */ +/* + freeswitch_hunt_group_destinations.php + Copyright (C) 2008 Mark J Crane + All rights reserved. + + FreeSWITCH (TM) + http://www.freeswitch.org/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require("guiconfig.inc"); +require("/usr/local/pkg/freeswitch.inc"); + + +$a_hunt_group_destinations = &$config['installedpackages']['freeswitchhuntgroupdestinations']['config']; + + +if ($_GET['act'] == "del") { + if ($_GET['type'] == 'huntgroupdestinations') { + if ($a_hunt_group_destinations[$_GET['id']]) { + unset($a_hunt_group_destinations[$_GET['id']]); + write_config(); + sync_package_freeswitch_hunt_group(); + header("Location: freeswitch_hunt_group_edit.php?id=".$_GET['parentid']); + exit; + } + } +} + +?>
\ No newline at end of file diff --git a/config/freeswitch/freeswitch_hunt_group_destinations_edit.tmp b/config/freeswitch/freeswitch_hunt_group_destinations_edit.tmp new file mode 100644 index 00000000..bd7f446b --- /dev/null +++ b/config/freeswitch/freeswitch_hunt_group_destinations_edit.tmp @@ -0,0 +1,230 @@ +<?php +/* $Id$ */ +/* + + freeswitch_hunt_group_destinations_edit.php + Copyright (C) 2008 Mark J Crane + All rights reserved. + + FreeSWITCH (TM) + http://www.freeswitch.org/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require("guiconfig.inc"); +require("/usr/local/pkg/freeswitch.inc"); + + +$a_hunt_group_destinations = &$config['installedpackages']['freeswitchhuntgroupdestinations']['config']; + + +$id = $_GET['id']; +if (isset($_POST['id'])) { + $id = $_POST['id']; +} + +$parentid = $_GET['parentid']; +if (isset($_POST['parentid'])) { + $parentid = $_POST['parentid']; +} + +$huntgroupid = $_GET['huntgroupid']; +if (isset($_POST['huntgroupid'])) { + $huntgroupid = $_POST['huntgroupid']; +} + + +if (isset($id) && $a_hunt_group_destinations[$id]) { + $pconfig['destinationnumber'] = $a_hunt_group_destinations[$id]['destinationnumber']; + $pconfig['destinationtype'] = $a_hunt_group_destinations[$id]['destinationtype']; + $pconfig['destinationorder'] = $a_hunt_group_destinations[$id]['destinationorder']; + $pconfig['destinationdescr'] = $a_hunt_group_destinations[$id]['destinationdescr']; +} +else { + if (isset($_GET['a'])) { + //if ($_GET['a'] == "action"){ $pconfig['destinationaction'] = "action"; } + //if ($_GET['a'] == "antiaction"){ $pconfig['destinationaction'] = "anti-action"; } + } +} + + +if ($_POST) { + + unset($input_errors); + $pconfig = $_POST; + + + if (!$input_errors) { + + $huntgroupdestinationent = array(); + $huntgroupdestinationent['huntgroupid'] = $_POST['huntgroupid']; + $huntgroupdestinationent['destinationnumber'] = $_POST['destinationnumber']; + $huntgroupdestinationent['destinationtype'] = $_POST['destinationtype']; + $huntgroupdestinationent['destinationorder'] = $_POST['destinationorder']; + $huntgroupdestinationent['destinationdescr'] = $_POST['destinationdescr']; + + if (isset($id) && $a_hunt_group_destinations[$id]) { + //update + $a_hunt_group_destinations[$id] = $huntgroupdestinationent; + } + else { + //add + $a_hunt_group_destinations[] = $huntgroupdestinationent; + } + + + write_config(); + sync_package_freeswitch_hunt_group(); + + header("Location: freeswitch_hunt_group_edit.php?id=".$parentid); + exit; + } +} + +include("head.inc"); + +?> + +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<?php include("fbegin.inc"); ?> +<p class="pgtitle">FreeSWITCH: Hunt Group: Destinations: Edit</p> +<?php if ($input_errors) print_input_errors($input_errors); ?> + +<div id="mainlevel"> +<table width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr><td class="tabnavtbl"> +<?php + +display_top_tabs(build_menu()); + +?> +</td></tr> +</table> +<table width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td class="tabcont" > + <br /> + <form action="freeswitch_hunt_group_destinations_edit.php" method="post" name="iform" id="iform"> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td width="22%" valign="top" class="vncellreq">Destination</td> + <td width="78%" class="vtable"> + <input name="destinationnumber" type="text" class="formfld" id="destinationnumber" size="40" value="<?=htmlspecialchars($pconfig['destinationnumber']);?>"> + <br> <span class="vexpl">Destination<br> + e.g. <em>1001</em></span></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq">Type</td> + <td width="78%" class="vtable"> + <?php + echo " <select name='destinationtype' class='formfld'>\n"; + echo " <option></option>\n"; + if (htmlspecialchars($pconfig['destinationtype']) == "extension") { + echo " <option selected='yes'>extension</option>\n"; + } + else { + echo " <option>extension</option>\n"; + } + if (htmlspecialchars($pconfig['destinationtype']) == "voicemail") { + echo " <option selected='yes'>voicemail</option>\n"; + } + else { + echo " <option>voicemail</option>\n"; + } + if (htmlspecialchars($pconfig['destinationtype']) == "sip uri") { + echo " <option selected='yes'>sip uri</option>\n"; + } + else { + echo " <option>sip uri</option>\n"; + } + echo " </select>\n"; + ?> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Order</td> + <td width="78%" class="vtable"> + <?php + echo " <select name='destinationorder' class='formfld'>\n"; + //echo " <option></option>\n"; + if (strlen(htmlspecialchars($pconfig['destinationorder']))> 0) { + echo " <option selected='yes' value='".htmlspecialchars($pconfig['destinationorder'])."'>".htmlspecialchars($pconfig['destinationorder'])."</option>\n"; + } + $i=0; + while($i<=999) { + if (strlen($i) == 1) { + echo " <option value='00$i'>00$i</option>\n"; + } + if (strlen($i) == 2) { + echo " <option value='0$i'>0$i</option>\n"; + } + if (strlen($i) == 3) { + echo " <option value='$i'>$i</option>\n"; + } + + $i++; + } + echo " </select>\n"; + ?> + <br /> + Processing of each destination is determined by this order. + + <br> <span class="vexpl"></span></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Description</td> + <td width="78%" class="vtable"> + <input name="destinationdescr" type="text" class="formfld" id="destinationdescr" size="40" value="<?=htmlspecialchars($pconfig['destinationdescr']);?>"> + <br> <span class="vexpl">You may enter a description here + for your reference (not parsed).</span></td> + </tr> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <input name="huntgroupid" type="hidden" value="<?=$huntgroupid;?>"> + <input name="parentid" type="hidden" value="<?=$parentid;?>"> + <?php if (isset($id) && $a_hunt_group_destinations[$id]): ?> + <input name="id" type="hidden" value="<?=$id;?>"> + <?php endif; ?> + <input name="Submit" type="submit" class="formbtn" value="Save"> <input class="formbtn" type="button" value="Cancel" onclick="history.back()"> + </td> + </tr> + </table> + </form> + + <br> + <br> + <br> + <br> + <br> + <br> + + </td> + </tr> +</table> + +</div> + +<?php include("fend.inc"); ?> +</body> +</html> diff --git a/config/freeswitch/freeswitch_hunt_group_edit.tmp b/config/freeswitch/freeswitch_hunt_group_edit.tmp new file mode 100644 index 00000000..8e06429c --- /dev/null +++ b/config/freeswitch/freeswitch_hunt_group_edit.tmp @@ -0,0 +1,412 @@ +<?php +/* $Id$ */ +/* + + freeswitch_hunt_group_edit.php + Copyright (C) 2008 Mark J Crane + All rights reserved. + + FreeSWITCH (TM) + http://www.freeswitch.org/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require("guiconfig.inc"); +require("/usr/local/pkg/freeswitch.inc"); + + +$a_hunt_group = &$config['installedpackages']['freeswitchhuntgroup']['config']; +$a_hunt_group_destinations = &$config['installedpackages']['freeswitchhuntgroupdestinations']['config']; + + +$id = $_GET['id']; +if (isset($_POST['id'])) { + $id = $_POST['id']; +} +$parentid = $id; + + + +if (isset($id) && $a_hunt_group[$id]) { + $pconfig['huntgroupid'] = $a_hunt_group[$id]['huntgroupid']; + $huntgroupid = $a_hunt_group[$id]['huntgroupid']; + $pconfig['huntgroupextension'] = $a_hunt_group[$id]['huntgroupextension']; + $pconfig['huntgroupname'] = $a_hunt_group[$id]['huntgroupname']; + $pconfig['huntgrouptype'] = $a_hunt_group[$id]['huntgrouptype']; + $pconfig['huntgroupcontext'] = $a_hunt_group[$id]['huntgroupcontext']; + $pconfig['huntgrouptimeout'] = $a_hunt_group[$id]['huntgrouptimeout']; + $pconfig['huntgrouptimeoutdestination'] = $a_hunt_group[$id]['huntgrouptimeoutdestination']; + $pconfig['huntgrouptimeouttype'] = $a_hunt_group[$id]['huntgrouptimeouttype']; + $pconfig['huntgroupdescr'] = $a_hunt_group[$id]['huntgroupdescr']; +} + +if ($_POST) { + + unset($input_errors); + $pconfig = $_POST; + + if ($_GET['act'] == "del") { + if ($_GET['type'] == 'destinations') { + if ($a_hunt_group_destinations[$_GET['optionid']]) { + unset($a_hunt_group_destinations[$_GET['optionid']]); + write_config(); + sync_package_freeswitch_hunt_group(); + header("Location: freeswitch_hunt_group_edit.php?id=".$_GET['id']); + exit; + } + } + } + + + if (!$input_errors) { + + $huntgroupent = array(); + if (strlen($_POST['huntgroupid']) > 0) { + $huntgroupent['huntgroupid'] = $_POST['huntgroupid']; + } + else { + $huntgroupent['huntgroupid'] = guid(); + } + $huntgroupent['huntgroupextension'] = $_POST['huntgroupextension']; + $huntgroupent['huntgroupname'] = $_POST['huntgroupname']; + $huntgroupent['huntgrouptype'] = $_POST['huntgrouptype']; + $huntgroupent['huntgroupcontext'] = $_POST['huntgroupcontext']; + $huntgroupent['huntgrouptimeout'] = $_POST['huntgrouptimeout']; + $huntgroupent['huntgrouptimeoutdestination'] = $_POST['huntgrouptimeoutdestination']; + $huntgroupent['huntgrouptimeouttype'] = $_POST['huntgrouptimeouttype']; + $huntgroupent['huntgroupdescr'] = $_POST['huntgroupdescr']; + + if (isset($id) && $a_hunt_group[$id]) { + //update + $a_hunt_group[$id] = $huntgroupent; + } + else { + //add + $a_hunt_group[] = $huntgroupent; + } + + //touch($d_hostsdirty_path); + write_config(); + sync_package_freeswitch_hunt_group(); + + header("Location: freeswitch_hunt_group.php"); + exit; + } +} + +include("head.inc"); + +?> + +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<?php include("fbegin.inc"); ?> +<p class="pgtitle">FreeSWITCH: Hunt Group: Edit</p> +<?php if ($input_errors) print_input_errors($input_errors); ?> + + +<div id="mainlevel"> +<table width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr><td class="tabnavtbl"> +<?php + +display_top_tabs(build_menu()); + +?> +</td></tr> +</table> +<table width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td class="tabcont" > + + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td><p><span class="vexpl"><span class="red"><strong>General Settings:<br> + </strong></span> + Hunt Group general settings. + </span></p></td> + </tr> + </table> + <br /> + + <form action="freeswitch_hunt_group_edit.php" method="post" name="iform" id="iform"> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td width="22%" valign="top" class="vncellreq">Extension</td> + <td width="78%" class="vtable"> + <input name="huntgroupextension" type="text" class="formfld" id="huntgroupextension" size="40" value="<?=htmlspecialchars($pconfig['huntgroupextension']);?>"> + <br> <span class="vexpl">e.g. <em>7002</em></span></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq">Hunt Group Name</td> + <td width="78%" class="vtable"> + <input name="huntgroupname" type="text" class="formfld" id="huntgroupname" size="40" value="<?=htmlspecialchars($pconfig['huntgroupname']);?>"> + </td> + </tr> + + <tr> + <td width="22%" valign="top" class="vncellreq">Type</td> + <td width="78%" class="vtable"> + <?php + echo " <select name='huntgrouptype' class='formfld'>\n"; + echo " <option></option>\n"; + if (htmlspecialchars($pconfig['huntgrouptype']) == "simultaneous") { + echo " <option selected='yes'>simultaneous</option>\n"; + } + else { + echo " <option>simultaneous</option>\n"; + } + if (htmlspecialchars($pconfig['huntgrouptype']) == "sequentially") { + echo " <option selected='yes'>sequentially</option>\n"; + } + else { + echo " <option>sequentially</option>\n"; + } + echo " </select>\n"; + ?> + </td> + </tr> + + <?php + if (strlen($pconfig['huntgrouptimeout']) == 0) { + $pconfig['huntgrouptimeout'] = 30; //set a default timeout + } + ?> + <tr> + <td width="22%" valign="top" class="vncell">Context</td> + <td width="78%" class="vtable"> + <input name="huntgroupcontext" type="text" class="formfld" id="huntgroupextension" size="40" value="<?=htmlspecialchars($pconfig['huntgroupcontext']);?>"> + <br> <span class="vexpl">e.g. <em>default</em></span></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Timeout</td> + <td width="78%" class="vtable"> + <input name="huntgrouptimeout" type="text" class="formfld" id="huntgrouptimeout" size="40" value="<?=htmlspecialchars($pconfig['huntgrouptimeout']);?>"> + <br> + <span class="vexpl"> + The timeout sets the time in seconds to continue to call before timing out. + </span> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Timeout Destination</td> + <td width="78%" class="vtable"> + <input name="huntgrouptimeoutdestination" type="text" class="formfld" id="huntgrouptimeoutdestination" size="40" value="<?=htmlspecialchars($pconfig['huntgrouptimeoutdestination']);?>"> + <br> <span class="vexpl">Destination<br> + e.g. <em>1001</em></span></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Timeout Type</td> + <td width="78%" class="vtable"> + <?php + echo " <select name='huntgrouptimeouttype' class='formfld'>\n"; + echo " <option></option>\n"; + if (htmlspecialchars($pconfig['huntgrouptimeouttype']) == "extension") { + echo " <option selected='yes'>extension</option>\n"; + } + else { + echo " <option>extension</option>\n"; + } + if (htmlspecialchars($pconfig['huntgrouptimeouttype']) == "voicemail") { + echo " <option selected='yes'>voicemail</option>\n"; + } + else { + echo " <option>voicemail</option>\n"; + } + if (htmlspecialchars($pconfig['huntgrouptimeouttype']) == "sip uri") { + echo " <option selected='yes'>sip uri</option>\n"; + } + else { + echo " <option>sip uri</option>\n"; + } + echo " </select>\n"; + ?> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Description</td> + <td width="78%" class="vtable"> + <input name="huntgroupdescr" type="text" class="formfld" id="descr" size="40" value="<?=htmlspecialchars($pconfig['huntgroupdescr']);?>"> + <br> <span class="vexpl">You may enter a description here + for your reference (not parsed).</span></td> + </tr> + + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <input name="Submit" type="submit" class="formbtn" value="Save"> <input class="formbtn" type="button" value="Cancel" onclick="history.back()"> + <input name="huntgroupid" type="hidden" value="<?=htmlspecialchars($pconfig['huntgroupid']);?>"> + <?php if (isset($id) && $a_hunt_group[$id]): ?> + <input name="id" type="hidden" value="<?=$id;?>"> + <?php endif; ?> + </td> + </tr> + </table> + </form> + + <br> + <br> + + <form action="freeswitch_hunt_group_edit.php" method="post" name="iform2" id="iform2"> + <?php + + + //echo "<pre>"; + //print_r ($a_hunt_group); + //echo "</pre>"; + + //if ($savemsg) print_info_box($savemsg); + //if (file_exists($d_hostsdirty_path)): echo"<p>"; + //print_info_box_np("The FreeSWITCH recordings have been changed.<br>You must apply the changes in order for them to take effect."); + //echo"<br />"; + //endif; + + ?> + + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td><p><span class="vexpl"><span class="red"><strong>Destinations<br /> + </strong></span> + The following destinations will be called. + </span></p></td> + </tr> + </table> + <br /> + + <table width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td width="20%" class="listhdrr">Destination</td> + <td width="25%" class="listhdrr">Type</td> + <td width="25%" class="listhdrr">Order</td> + <td width="45%" class="listhdr">Description</td> + <td width="10%" class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td width="17"></td> + <td valign="middle"><a href="freeswitch_hunt_group_destinations_edit.php?parentid=<?=$parentid;?>&huntgroupid=<?=$huntgroupid;?>&a=action"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td> + </tr> + </table> + </td> + </tr> + + <?php + //create a temporary id for the array + $i = 0; + if (count($a_hunt_group_destinations) > 0) { + foreach ($a_hunt_group_destinations as $ent) { + $a_hunt_group_destinations[$i]['id'] = $i; + $i++; + } + } + + //order the array + function cmp_number($a, $b) { + if ($a["destinationorder"] > $b["destinationorder"]) { + return 1; + } + else { + return 0; + } + } + if (count($a_hunt_group_destinations) > 0) { usort($a_hunt_group_destinations, "cmp_number"); } + + $i = 0; + if (count($a_hunt_group_destinations) > 0) { + foreach ($a_hunt_group_destinations as $ent) { + if ($huntgroupid == $ent['huntgroupid']) { + ?> + <tr> + <td class="listlr" ondblclick="document.location='freeswitch_hunt_group_destinations_edit.php?id=<?=$ent['id'];?>&parentid=<?=$parentid;?>&huntgroupid=<?=$huntgroupid;?>'"> + <?=$ent['destinationnumber']?> + </td> + <td class="listr" ondblclick="document.location='freeswitch_hunt_group_destinations_edit.php?id=<?=$ent['id'];?>&parentid=<?=$parentid;?>&huntgroupid=<?=$huntgroupid;?>';"> + <?=$ent['destinationtype'];?> + </td> + <td class="listr" ondblclick="document.location='freeswitch_hunt_group_destinations_edit.php?id=<?=$ent['id'];?>&parentid=<?=$parentid;?>&huntgroupid=<?=$huntgroupid;?>';"> + <?=$ent['destinationorder'];?> + </td> + <td class="listbg" ondblclick="document.location='freeswitch_hunt_group_destinations_edit.php?id=<?=$ent['id'];?>&parentid=<?=$parentid;?>&huntgroupid=<?=$huntgroupid;?>';"> + <font color="#FFFFFF"><?=htmlspecialchars($ent['destinationdescr']);?> + </td> + <td valign="middle" nowrap class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td valign="middle"><a href="freeswitch_hunt_group_destinations_edit.php?id=<?=$ent['id'];?>&parentid=<?=$parentid;?>&huntgroupid=<?=$huntgroupid;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0"></a></td> + <td><a href="freeswitch_hunt_group_destinations.php?type=huntgroupdestinations&act=del&id=<?=$ent['id'];?>&parentid=<?=$parentid;?>&huntgroupid=<?=$huntgroupid;?>" onclick="return confirm('Do you really want to delete this recording?')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0"></a></td> + </tr> + </table> + </td> + </tr> + <?php + } + $i++; + } + } + ?> + <tr> + <td class="list" colspan="4"></td> + <td class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td width="17"></td> + <td valign="middle"><a href="freeswitch_hunt_group_destinations_edit.php?parentid=<?=$parentid;?>&huntgroupid=<?=$huntgroupid;?>&a=action"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td> + </tr> + </table> + </td> + </tr> + + + <tr> + <td class="list" colspan="4"></td> + <td class="list"></td> + </tr> + </table> + + </form> + + + + + </td> + </tr> + + + <tr> + <td class="list" colspan="3"></td> + <td class="list"></td> + </tr> + </table> + + + + <br> + <br> + + </td> + </tr> +</table> + +</div> + +<?php include("fend.inc"); ?> +</body> +</html> diff --git a/pkg_config.7.xml b/pkg_config.7.xml index 9efd1c6f..7aa9fa42 100755 --- a/pkg_config.7.xml +++ b/pkg_config.7.xml @@ -92,7 +92,7 @@ <pkginfolink>http://doc.pfsense.org/index.php/FreeSWITCH</pkginfolink> <config_file>http://www.pfsense.com/packages/config/freeswitch/freeswitch.xml</config_file> <depends_on_package_base_url>http://files.pfsense.org/packages/7/All/</depends_on_package_base_url> - <version>0.8.7.5</version> + <version>0.8.8</version> <status>Beta</status> <required_version>1.2.1</required_version> <maintainer>markjcrane@gmail.com</maintainer> |