Enhance Add Tones (#1857)

Add tone support
This commit is contained in:
Mafoo 2016-09-04 03:32:19 +01:00 committed by FusionPBX
parent 49fd2cc3c4
commit 2a1f098246
6 changed files with 162 additions and 0 deletions

29
app/tones/app_config.php Normal file
View File

@ -0,0 +1,29 @@
<?php
//application details
$apps[$x]['name'] = "Tones";
$apps[$x]['uuid'] = "38ab9f01-bcd2-4726-a9ff-9af8ed9e396a";
$apps[$x]['category'] = "Switch";;
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "Manage Tones";
//destination details
$y = 0;
$apps[$x]['destinations'][$y]['type'] = "sql";
$apps[$x]['destinations'][$y]['label'] = "tones";
$apps[$x]['destinations'][$y]['name'] = "tones";
$apps[$x]['destinations'][$y]['sql'] = "select var_uuid as uuid, var_name as name, var_value as destination, var_description as description from v_vars";
$apps[$x]['destinations'][$y]['where'] = "where var_cat = 'Tones' ";
$apps[$x]['destinations'][$y]['order_by'] = "var_name asc";
$apps[$x]['destinations'][$y]['field']['uuid'] = "var_uuid";
$apps[$x]['destinations'][$y]['field']['name'] = "var_name";
$apps[$x]['destinations'][$y]['field']['destination'] = "var_filename";
$apps[$x]['destinations'][$y]['field']['description'] = "var_description";
$apps[$x]['destinations'][$y]['select_value']['dialplan'] = "play tone_stream://\${destination}";
$apps[$x]['destinations'][$y]['select_value']['ivr'] = "play tone_stream://\${destination}";
$apps[$x]['destinations'][$y]['select_label'] = "\${name}";
?>

View File

@ -238,6 +238,21 @@ EOD;
}
$result[] = $row;
}
elseif(preg_match("/-tone/", $value[0])){
$row = Array();
$row['var_cat'] = 'Tones';
$row['var_name'] = $value[0];
$row['var_value'] = $value[1];
$row['var_enabled'] = $item->attributes()->enabled;
if(!isset($row['var_enabled'])){
$row['var_enabled'] = 'true';
}
$row['var_description'] = $item->attributes()->description;
if(!isset($row['var_description'])){
$row['var_description'] = base64_encode('Imported from vars.xml');
}
$result[] = $row;
}
}
}

View File

@ -732,6 +732,19 @@ $text['label-ringback']['de-at'] = "Zurückrufen";
$text['label-ringback']['he'] = "לצלצל בחזרה";
$text['label-ringback']['ru-ru'] = "Перезвонить";
$text['label-tone']['en-us'] = "Tone";
$text['label-tone']['es-cl'] = "Tono";
$text['label-tone']['pt-pt'] = "Tom";
$text['label-tone']['pt-br'] = "Tom";
$text['label-tone']['pl'] = "Ton";
$text['label-tone']['fr-fr'] = "Ton";
$text['label-tone']['nl-nl'] = "Toon";
$text['label-tone']['sv-se'] = "Tona";
$text['label-tone']['uk'] = "Тон";
$text['label-tone']['de-at'] = "Ton";
$text['label-tone']['he'] = "טוֹן";
$text['label-tone']['ru-ru'] = "Тон";
$text['label-music_on_hold']['en-us'] = "Music on Hold";
$text['label-music_on_hold']['es-cl'] = "Musica en Espera";
$text['label-music_on_hold']['pt-pt'] = "Música em Espera";

View File

@ -31,6 +31,7 @@ if (!class_exists('ringbacks')) {
//define variables
public $db;
private $ringbacks;
private $tones_list;
private $music_list;
private $recordings_list;
private $default_ringback_label;
@ -86,6 +87,11 @@ if (!class_exists('ringbacks')) {
unset($results, $default_ringback, $label);
*/
//get the tones
require_once "resources/classes/tones.php";
$tones = new tones;
$this->tones_list = $tones->tones_list();
//get music on hold and recordings
if (is_dir($_SERVER["PROJECT_ROOT"].'/app/music_on_hold')) {
require_once "app/music_on_hold/resources/classes/switch_music_on_hold.php";
@ -148,6 +154,19 @@ if (!class_exists('ringbacks')) {
unset($selected_ringback);
}
//tones
if (sizeof($this->tones_list) > 0) {
$selected_tone = $selected;
$selected_tone = preg_replace('/\A\${/',"",$selected_tone);
$selected_tone = preg_replace('/}\z/',"",$selected_tone);
$select .= " <optgroup label='".$text['label-tone']."'>";
foreach($this->tones_list as $tone_value => $tone_name) {
$select .= " <option value='\${".$tone_value."}'".(($selected_tone == $tone_value) ? ' selected="selected"' : '').">".$tone_name."</option>\n";
}
$select .= " </optgroup>\n";
unset($selected_tone);
}
//end the select and return it
$select .= "</select>\n";
return $select;

View File

@ -0,0 +1,79 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Matthew Vale <github@mafoo.org>
*/
if (!class_exists('tones')) {
class tones {
//define variables
public $db;
private $tones;
private $music_list;
private $recordings_list;
private $default_tone_label;
//class constructor
public function __construct() {
//connect to the database if not connected
if (!$this->db) {
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$this->db = $database->db;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get the tones
$sql = "select * from v_vars ";
$sql .= "where var_cat = 'Tones' ";
$sql .= "order by var_name asc ";
$prep_statement = $this->db->prepare(check_sql($sql));
$prep_statement->execute();
$tones = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
foreach($tones as $tone) {
$tone = $tone['var_name'];
$label = $text['label-'.$tone];
if ($label == "") {
$label = $tone;
}
$tone_list[$tone] = $label;
}
$this->tones = $tone_list;
unset($tone_list);
}
public function tones_list() {
return $this->tones;
}
}
}
?>

View File

@ -80,6 +80,13 @@ where fs.mydomain.com is a DNS A record-useful when fs is on a dynamic IP addres
<X-PRE-PROCESS cmd="set" data="us-ring=%(2000,4000,440,480)" />
<X-PRE-PROCESS cmd="set" data="bong-ring=v=-7;%(100,0,941.0,1477.0);v=-7;>=2;+=.1;%(1400,0,350,440)" />
<!-- Tones -->
<X-PRE-PROCESS cmd="set" data="vacant-us-tone=%(274,0,913.8);%(274,0,1370.6);%(380,0,1776.7)" />
<X-PRE-PROCESS cmd="set" data="vacant-uk-tone=%(330,15,950);%(330,15,1400);%(330,1000,1800)" />
<X-PRE-PROCESS cmd="set" data="busy-us-tone=%(500,500,480,620)" />
<X-PRE-PROCESS cmd="set" data="busy-au-tone=v=-13;%(375,375,420);v=-23;%(375,375,420)" />
<X-PRE-PROCESS cmd="set" data="bong-us-tone=v=-7;%(100,0,941.0,1477.0);v=-7;>=2;+=.1;%(1400,0,350,440)" />
<!-- SIP -->
<!-- Used to turn on sip loopback unrolling. -->
<X-PRE-PROCESS cmd="set" data="unroll_loops=true" />