Ran: .......................................... 42 / 42 (100%)
No fixable errors were found Time: 10.05 secs; Memory: 41.75MB Signed-off-by: Diederik de Groot <dkgroot@talon.nl>
This commit is contained in:
parent
ca16773fa5
commit
de0a07562f
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
//namespace FreePBX\modules;
|
||||
// License for all code of this FreePBX module can be found in the license file inside the module directory
|
||||
// Copyright 2015 Sangoma Technologies.
|
||||
// License for all code of this FreePBX module can be found in the license file inside the module directory
|
||||
// Copyright 2015 Sangoma Technologies.
|
||||
// https://github.com/chan-sccp/chan-sccp/wiki/Setup-FreePBX
|
||||
// http://chan-sccp-b.sourceforge.net/doc/setup_sccp.xhtml
|
||||
// https://github.com/chan-sccp/chan-sccp/wiki/Conferencing
|
||||
|
@ -81,17 +81,18 @@
|
|||
|
||||
namespace FreePBX\modules;
|
||||
|
||||
class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
||||
class Sccp_manager extends \FreePBX_Helpers implements \BMO
|
||||
{
|
||||
/* Field Values for type seq */
|
||||
|
||||
// const General - sccp.conf = '0';
|
||||
// const General - sccp.conf[general] = '0';
|
||||
// const General - sccp.conf[%keyset%] = '5'; NAME space
|
||||
// const General - sccp.conf[%keyset%] = '6'; data
|
||||
// const General - default.xml = '10';
|
||||
// const General - templet.xml = '20';
|
||||
// const General - system_path = '2';
|
||||
// const General - don't store = '99';
|
||||
// const General - sccp.conf = '0';
|
||||
// const General - sccp.conf[general] = '0';
|
||||
// const General - sccp.conf[%keyset%] = '5'; NAME space
|
||||
// const General - sccp.conf[%keyset%] = '6'; data
|
||||
// const General - default.xml = '10';
|
||||
// const General - templet.xml = '20';
|
||||
// const General - system_path = '2';
|
||||
// const General - don't store = '99';
|
||||
// private $SCCP_LANG_DICTIONARY = 'SCCP-dictionary.xml'; // CISCO LANG file search in /tftp-path
|
||||
private $SCCP_LANG_DICTIONARY = 'be-sccp.jar'; // CISCO LANG file search in /tftp-path
|
||||
private $pagedata = null;
|
||||
|
@ -111,7 +112,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
public $class_error; //error construct
|
||||
public $info_warning;
|
||||
|
||||
public function __construct($freepbx = null) {
|
||||
public function __construct($freepbx = null)
|
||||
{
|
||||
if ($freepbx == null) {
|
||||
throw new Exception("Not given a FreePBX Object");
|
||||
}
|
||||
|
@ -171,7 +173,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* Generate Input elements in Html Code from sccpgeneral.xml
|
||||
*/
|
||||
|
||||
public function ShowGroup($grup_name, $heder_show, $form_prefix = 'sccp', $form_values = null) {
|
||||
public function ShowGroup($grup_name, $heder_show, $form_prefix = 'sccp', $form_values = null)
|
||||
{
|
||||
$htmlret = "";
|
||||
if (empty($form_values)) {
|
||||
$form_values = $this->sccpvalues;
|
||||
|
@ -181,8 +184,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
$htmlret .= load_view(__DIR__ . '/views/formShow.php', array(
|
||||
'itm' => $item, 'h_show' => $heder_show,
|
||||
'form_prefix' => $form_prefix, 'fvalues' => $form_values,
|
||||
'tftp_lang' => $this->getTftpLang(), 'metainfo' => $this->sccp_metainfo)
|
||||
);
|
||||
'tftp_lang' => $this->getTftpLang(), 'metainfo' => $this->sccp_metainfo));
|
||||
}
|
||||
} else {
|
||||
$htmlret .= load_view(__DIR__ . '/views/formShowError.php');
|
||||
|
@ -194,7 +196,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* Load config vars from base array
|
||||
*/
|
||||
|
||||
public function initVarfromDefs() {
|
||||
public function initVarfromDefs()
|
||||
{
|
||||
foreach ($this->extconfigs->getextConfig('sccpDefaults') as $key => $value) {
|
||||
if (empty($this->sccpvalues[$key])) {
|
||||
$this->sccpvalues[$key] = array('keyword' => $key, 'data' => $value, 'type' => '0', 'seq' => '0');
|
||||
|
@ -206,7 +209,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* Load config vars from xml
|
||||
*/
|
||||
|
||||
public function initVarfromXml() {
|
||||
public function initVarfromXml()
|
||||
{
|
||||
if ((array) $this->xml_data) {
|
||||
foreach ($this->xml_data->xpath('//page_group') as $item) {
|
||||
foreach ($item->children() as $child) {
|
||||
|
@ -215,7 +219,6 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
$seq = (string) $child['seq'];
|
||||
}
|
||||
if ($seq < 99) {
|
||||
|
||||
if ($child['type'] == 'IE') {
|
||||
foreach ($child->xpath('input') as $value) {
|
||||
$tp = 0;
|
||||
|
@ -224,8 +227,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
} else {
|
||||
$datav = (string) $value->value;
|
||||
}
|
||||
if (strtolower($value->type) == 'number')
|
||||
if (strtolower($value->type) == 'number') {
|
||||
$tp = 1;
|
||||
}
|
||||
if (empty($this->sccpvalues[(string) $value->name])) {
|
||||
$this->sccpvalues[(string) $value->name] = array('keyword' => (string) $value->name, 'data' => $datav, 'type' => $tp, 'seq' => $seq);
|
||||
// $this->sccpvalues[] = array('keyword' => (string)$value->name, 'data' =>(string)$value->default, 'type'=> '0');
|
||||
|
@ -262,35 +266,37 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
|
||||
/* unused */
|
||||
|
||||
public function doConfigPageInit($page) {
|
||||
public function doConfigPageInit($page)
|
||||
{
|
||||
$this->doGeneralPost();
|
||||
}
|
||||
|
||||
/* unused */
|
||||
|
||||
public function install() {
|
||||
|
||||
public function install()
|
||||
{
|
||||
}
|
||||
|
||||
/* unused */
|
||||
|
||||
public function uninstall() {
|
||||
|
||||
public function uninstall()
|
||||
{
|
||||
}
|
||||
|
||||
/* unused */
|
||||
|
||||
public function backup() {
|
||||
|
||||
public function backup()
|
||||
{
|
||||
}
|
||||
|
||||
/* unused */
|
||||
|
||||
public function restore($backup) {
|
||||
|
||||
public function restore($backup)
|
||||
{
|
||||
}
|
||||
|
||||
public function getActionBar($request) {
|
||||
public function getActionBar($request)
|
||||
{
|
||||
$buttons = array();
|
||||
switch ($request['display']) {
|
||||
case 'sccp_adv':
|
||||
|
@ -368,7 +374,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* Show form information - General
|
||||
*/
|
||||
|
||||
public function myShowPage() {
|
||||
public function myShowPage()
|
||||
{
|
||||
$request = $_REQUEST;
|
||||
$action = !empty($request['action']) ? $request['action'] : '';
|
||||
if ($this->sccpvalues['sccp_compatible']['data'] >= '433') {
|
||||
|
@ -395,7 +402,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
}
|
||||
|
||||
if (empty($this->pagedata)) {
|
||||
// $driver = $this->FreePBX->Config->get_conf_setting('ASTSIPDRIVER');
|
||||
// $driver = $this->FreePBX->Config->get_conf_setting('ASTSIPDRIVER');
|
||||
$this->pagedata = array(
|
||||
"general" => array(
|
||||
"name" => _("General SCCP Settings"),
|
||||
|
@ -434,7 +441,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $this->pagedata;
|
||||
}
|
||||
|
||||
public function InfoServerShowPage() {
|
||||
public function InfoServerShowPage()
|
||||
{
|
||||
$request = $_REQUEST;
|
||||
$action = !empty($request['action']) ? $request['action'] : '';
|
||||
$this->pagedata = array(
|
||||
|
@ -454,7 +462,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $this->pagedata;
|
||||
}
|
||||
|
||||
public function AdvServerShowPage() {
|
||||
public function AdvServerShowPage()
|
||||
{
|
||||
$request = $_REQUEST;
|
||||
$action = !empty($request['action']) ? $request['action'] : '';
|
||||
$inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : '';
|
||||
|
@ -500,7 +509,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $this->pagedata;
|
||||
}
|
||||
|
||||
public function PhoneShowPage() {
|
||||
public function PhoneShowPage()
|
||||
{
|
||||
$request = $_REQUEST;
|
||||
$action = !empty($request['action']) ? $request['action'] : '';
|
||||
$inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : '';
|
||||
|
@ -591,13 +601,14 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $this->pagedata;
|
||||
}
|
||||
|
||||
public function FormShowPage() {
|
||||
public function FormShowPage()
|
||||
{
|
||||
$request = $_REQUEST;
|
||||
$action = !empty($request['action']) ? $request['action'] : '';
|
||||
|
||||
|
||||
if (empty($this->pagedata)) {
|
||||
// $driver = $this->FreePBX->Config->get_conf_setting('ASTSIPDRIVER');
|
||||
// $driver = $this->FreePBX->Config->get_conf_setting('ASTSIPDRIVER');
|
||||
|
||||
$this->pagedata = array(
|
||||
"general" => array(
|
||||
|
@ -622,13 +633,15 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $this->pagedata;
|
||||
}
|
||||
|
||||
public function getRightNav($request) {
|
||||
public function getRightNav($request)
|
||||
{
|
||||
if (isset($request['tech_hardware']) && ($request['tech_hardware'] == 'cisco')) {
|
||||
return load_view(__DIR__ . "/views/hardware.rnav.php", array('request' => $request));
|
||||
}
|
||||
}
|
||||
|
||||
public function ajaxRequest($req, &$setting) {
|
||||
public function ajaxRequest($req, &$setting)
|
||||
{
|
||||
switch ($req) {
|
||||
case 'backupsettings':
|
||||
case 'savesettings':
|
||||
|
@ -661,7 +674,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return false;
|
||||
}
|
||||
|
||||
public function ajaxHandler() {
|
||||
public function ajaxHandler()
|
||||
{
|
||||
$request = $_REQUEST;
|
||||
$msg = array();
|
||||
$cmd_id = $request['command'];
|
||||
|
@ -829,7 +843,6 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
$hw_list[] = array('name' => $idv);
|
||||
}
|
||||
if ($idv == 'all') {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -887,7 +900,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
case 'all':
|
||||
case 'extension':
|
||||
case 'enabled':
|
||||
$devices = $this->getSccp_model_information($request['type'], $validate = TRUE);
|
||||
$devices = $this->getSccp_model_information($request['type'], $validate = true);
|
||||
break;
|
||||
}
|
||||
if (empty($devices)) {
|
||||
|
@ -1047,10 +1060,12 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
}
|
||||
}
|
||||
|
||||
public function doGeneralPost() {
|
||||
public function doGeneralPost()
|
||||
{
|
||||
// $this->FreePBX->WriteConfig($config);
|
||||
if (!isset($_REQUEST['Submit']))
|
||||
if (!isset($_REQUEST['Submit'])) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1059,7 +1074,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
*
|
||||
*/
|
||||
|
||||
function get_buttons_phone($get_settings, $ref_id = '', $ref_type = 'sccpdevice') {
|
||||
function get_buttons_phone($get_settings, $ref_id = '', $ref_type = 'sccpdevice')
|
||||
{
|
||||
// Get Model Buttons info
|
||||
$res = array();
|
||||
$def_feature = array('parkinglot' => array('name' => 'P.slot', 'value' => 'default'),
|
||||
|
@ -1174,7 +1190,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $res;
|
||||
}
|
||||
|
||||
function save_hw_phone($get_settings, $validateonly = false) {
|
||||
function save_hw_phone($get_settings, $validateonly = false)
|
||||
{
|
||||
$hdr_prefix = 'sccp_hw_';
|
||||
$hdr_arprefix = 'sccp_hw-ar_';
|
||||
|
||||
|
@ -1225,8 +1242,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
$i++;
|
||||
};
|
||||
$value = implode(";", $save_codec);
|
||||
} else
|
||||
} else {
|
||||
$value = 'all'; // Bug If not System Codecs
|
||||
}
|
||||
// } else $value = 'alaw;ulaw'; // Bug If not System Codecs
|
||||
break;
|
||||
case 'phonecodepage':
|
||||
|
@ -1250,20 +1268,20 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
// }
|
||||
// break;
|
||||
//
|
||||
default :
|
||||
default:
|
||||
if (!empty($get_settings[$hdr_prefix . $key])) {
|
||||
$value = $get_settings[$hdr_prefix . $key];
|
||||
}
|
||||
if (!empty($get_settings[$hdr_arprefix . $key])) {
|
||||
$arr_data = '';
|
||||
$arr_clear = FALSE;
|
||||
$arr_clear = false;
|
||||
foreach ($get_settings[$hdr_arprefix . $key] as $vkey => $vval) {
|
||||
$tmp_data = '';
|
||||
foreach ($vval as $vkey => $vval) {
|
||||
switch ($vkey) {
|
||||
case 'inherit':
|
||||
if ($vval == 'on') {
|
||||
$arr_clear = TRUE;
|
||||
$arr_clear = true;
|
||||
// Злобный ХАК
|
||||
if ($key == 'permit') {
|
||||
$save_settings['deny'] = 'NONE';
|
||||
|
@ -1325,7 +1343,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $save_settings;
|
||||
}
|
||||
|
||||
function save_submit($get_settings, $validateonly = false) {
|
||||
function save_submit($get_settings, $validateonly = false)
|
||||
{
|
||||
$hdr_prefix = 'sccp_';
|
||||
$hdr_arprefix = 'sccp-ar_';
|
||||
$save_settings = array();
|
||||
|
@ -1416,7 +1435,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $save_settings;
|
||||
}
|
||||
|
||||
function save_rouming_users($get_settings, $validateonly = false) {
|
||||
function save_rouming_users($get_settings, $validateonly = false)
|
||||
{
|
||||
$hdr_prefix = 'sccp_ru_';
|
||||
$hdr_arprefix = 'sccp_ru-ar_';
|
||||
|
||||
|
@ -1450,20 +1470,20 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
$value = $get_settings[$hdr_prefix . 'netlang'] . ':' . $get_settings[$hdr_prefix . 'devlang'];
|
||||
}
|
||||
break;
|
||||
default :
|
||||
default:
|
||||
if (!empty($get_settings[$hdr_prefix . $key])) {
|
||||
$value = $get_settings[$hdr_prefix . $key];
|
||||
}
|
||||
if (!empty($get_settings[$hdr_arprefix . $key])) {
|
||||
$arr_data = '';
|
||||
$arr_clear = FALSE;
|
||||
$arr_clear = false;
|
||||
foreach ($get_settings[$hdr_arprefix . $key] as $vkey => $vval) {
|
||||
$tmp_data = '';
|
||||
foreach ($vval as $vkey => $vval) {
|
||||
switch ($vkey) {
|
||||
case 'inherit':
|
||||
if ($vval == 'on') {
|
||||
$arr_clear = TRUE;
|
||||
$arr_clear = true;
|
||||
// Злобный ХАК
|
||||
if ($key == 'permit') {
|
||||
$save_settings['deny'] = 'NONE';
|
||||
|
@ -1515,7 +1535,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $save_settings;
|
||||
}
|
||||
|
||||
public function getSccpSettingFromDB() {
|
||||
public function getSccpSettingFromDB()
|
||||
{
|
||||
$raw_data = $this->dbinterface->get_db_SccpSetting();
|
||||
foreach ($raw_data as $var) {
|
||||
$this->sccpvalues[$var['keyword']] = array('keyword' => $var['keyword'], 'data' => $var['data'], 'seq' => $var['seq'], 'type' => $var['type']);
|
||||
|
@ -1523,7 +1544,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return;
|
||||
}
|
||||
|
||||
public function getMyConfig($var = null, $id = "noid") {
|
||||
public function getMyConfig($var = null, $id = "noid")
|
||||
{
|
||||
// $final = false;
|
||||
switch ($var) {
|
||||
case "voicecodecs":
|
||||
|
@ -1558,7 +1580,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $final;
|
||||
}
|
||||
|
||||
public function getCodecs($type, $showDefaults = false) {
|
||||
public function getCodecs($type, $showDefaults = false)
|
||||
{
|
||||
$allSupported = array();
|
||||
// $Sccp_Codec = array('gsm','slin16','allow','ulaw','g722','g723','g726','g728','g729','ilibc','isac','opus','h224','aac','h264','h263','h265','h261');
|
||||
$Sccp_Codec = array('gsm', 'slin16', 'alaw', 'ulaw', 'g722', 'g723', 'g726', 'g728', 'g729', 'ilibc', 'opus', 'h264', 'h263', 'h265', 'h261');
|
||||
|
@ -1630,7 +1653,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* @param {string} $type Codec Type
|
||||
* @param {array} $codecs=array() The codecs with order, if blank set defaults
|
||||
*/
|
||||
public function setCodecs($type, $codecs = array()) {
|
||||
public function setCodecs($type, $codecs = array())
|
||||
{
|
||||
$default = empty($codecs) ? true : false;
|
||||
switch ($type) {
|
||||
case 'audio':
|
||||
|
@ -1656,11 +1680,13 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return true;
|
||||
}
|
||||
|
||||
function Sccp_manager_hookGet_config($engine) {
|
||||
function Sccp_manager_hookGet_config($engine)
|
||||
{
|
||||
$this->debugdata($engine);
|
||||
}
|
||||
|
||||
function Sccp_manager_get_config($engine) {
|
||||
function Sccp_manager_get_config($engine)
|
||||
{
|
||||
$this->debugdata($engine);
|
||||
}
|
||||
|
||||
|
@ -1689,11 +1715,13 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* return fiends Lag pack
|
||||
*
|
||||
*/
|
||||
public function getTftpLang() {
|
||||
public function getTftpLang()
|
||||
{
|
||||
return $this->tftpLang;
|
||||
}
|
||||
|
||||
private function initTftpLang() {
|
||||
private function initTftpLang()
|
||||
{
|
||||
$result = array();
|
||||
if (empty($this->sccppath["tftp_path"]) || empty($this->sccppath["tftp_lang_path"])) {
|
||||
return;
|
||||
|
@ -1724,7 +1752,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* Check tftp/xml file path and permissions
|
||||
*/
|
||||
|
||||
private function init_tftp_lang_path() {
|
||||
private function init_tftp_lang_path()
|
||||
{
|
||||
$dir = $this->sccppath["tftp_lang_path"];
|
||||
foreach ($this->extconfigs->getextConfig('sccp_lang') as $lang_key => $lang_value) {
|
||||
$filename = $dir . DIRECTORY_SEPARATOR . $lang_value['locale'];
|
||||
|
@ -1742,7 +1771,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
|
||||
// !TODO!: -TODO-: This function is getting a little big. Might be possible to sperate tftp work into it's own file/class. Initially, you need to remove the not working section and commented out section
|
||||
|
||||
function init_sccp_path() {
|
||||
function init_sccp_path()
|
||||
{
|
||||
global $db;
|
||||
global $amp_conf;
|
||||
$driver_revision = array('0' => '', '430' => '.v431', '431' => '.v432', '432' => '.v432', '433' => '.v433');
|
||||
|
@ -1805,7 +1835,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
*
|
||||
*/
|
||||
|
||||
function sccp_create_xmlSoftkey() {
|
||||
function sccp_create_xmlSoftkey()
|
||||
{
|
||||
foreach ($this->srvinterface->sccp_list_keysets() as $keyl => $vall) {
|
||||
$this->xmlinterface->create_xmlSoftkeyset($this->sccp_conf_init, $this->sccppath, $keyl);
|
||||
}
|
||||
|
@ -1816,7 +1847,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
*
|
||||
*/
|
||||
|
||||
function get_DialPlanList() {
|
||||
function get_DialPlanList()
|
||||
{
|
||||
$dir = $this->sccppath["tftp_dialplan"] . '/dial*.xml';
|
||||
$base_len = strlen($this->sccppath["tftp_dialplan"]) + 1;
|
||||
$res = glob($dir);
|
||||
|
@ -1828,7 +1860,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $res;
|
||||
}
|
||||
|
||||
function get_DialPlan($get_file) {
|
||||
function get_DialPlan($get_file)
|
||||
{
|
||||
$file = $this->sccppath["tftp_dialplan"] . '/' . $get_file . '.xml';
|
||||
if (file_exists($file)) {
|
||||
// $load_xml_data = simplexml_load_file($file);
|
||||
|
@ -1842,7 +1875,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $res;
|
||||
}
|
||||
|
||||
function del_DialPlan($get_file) {
|
||||
function del_DialPlan($get_file)
|
||||
{
|
||||
if (!empty($get_file)) {
|
||||
$file = $this->sccppath["tftp_dialplan"] . '/' . $get_file . '.xml';
|
||||
if (file_exists($file)) {
|
||||
|
@ -1852,7 +1886,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $res;
|
||||
}
|
||||
|
||||
function save_DialPlan($get_settings) {
|
||||
function save_DialPlan($get_settings)
|
||||
{
|
||||
|
||||
$confDir = $this->sccppath["tftp_dialplan"];
|
||||
return $this->xmlinterface->save_DialPlan($confDir, $get_settings);
|
||||
|
@ -1863,7 +1898,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
*
|
||||
*/
|
||||
|
||||
private function sccp_db_update_butons($hw_list = array()) {
|
||||
private function sccp_db_update_butons($hw_list = array())
|
||||
{
|
||||
|
||||
$save_buttons = array();
|
||||
if (!empty($hw_list)) {
|
||||
|
@ -1883,7 +1919,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return array('Response' => ' Found 0 device ', 'data' => '');
|
||||
}
|
||||
$copy_fld = array('ref', 'reftype', 'instance', 'buttontype');
|
||||
$user_list = $user_list = $this->dbinterface->get_db_SccpTableByID("SccpExtension", Array(), 'name');
|
||||
$user_list = $user_list = $this->dbinterface->get_db_SccpTableByID("SccpExtension", array(), 'name');
|
||||
foreach ($buton_list as $value) {
|
||||
$btn_opt = explode(',', $value['options']);
|
||||
$btn_id = $btn_opt[0];
|
||||
|
@ -1909,7 +1945,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* sccp_db_save_setting(empty) - Save All settings from $sccpvalues
|
||||
*/
|
||||
|
||||
private function sccp_db_save_setting($save_value = array()) {
|
||||
private function sccp_db_save_setting($save_value = array())
|
||||
{
|
||||
global $db;
|
||||
global $amp_conf;
|
||||
|
||||
|
@ -1933,7 +1970,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* Create XMLDefault.cnf.xml
|
||||
*/
|
||||
|
||||
function sccp_create_tftp_XML() {
|
||||
function sccp_create_tftp_XML()
|
||||
{
|
||||
|
||||
foreach ($this->sccpvalues as $key => $value) {
|
||||
$data_value[$key] = $value['data'];
|
||||
|
@ -1941,8 +1979,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
$data_value['server_if_list'] = $this->getIP_information2('ip4');
|
||||
$model_information = $this->getSccp_model_information($get = "enabled", $validate = false); // Get Active
|
||||
|
||||
if (empty($model_information))
|
||||
if (empty($model_information)) {
|
||||
$model_information = $this->getSccp_model_information($get = "all", $validate = false); // Get All
|
||||
}
|
||||
|
||||
$lang_data = $this->extconfigs->getextConfig('sccp_lang');
|
||||
$data_value['tftp_path'] = $this->sccppath["tftp_path"];
|
||||
|
@ -1954,7 +1993,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
* Create (SEP) dev_ID.cnf.xml
|
||||
*/
|
||||
|
||||
function sccp_create_device_XML($dev_id = '') {
|
||||
function sccp_create_device_XML($dev_id = '')
|
||||
{
|
||||
|
||||
if (empty($dev_id)) {
|
||||
return false;
|
||||
|
@ -2029,7 +2069,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $this->xmlinterface->create_SEP_XML($this->sccppath["tftp_path_store"], $data_value, $dev_config, $dev_id, $lang_data);
|
||||
}
|
||||
|
||||
function sccp_delete_device_XML($dev_id = '') {
|
||||
function sccp_delete_device_XML($dev_id = '')
|
||||
{
|
||||
if (empty($dev_id)) {
|
||||
return false;
|
||||
}
|
||||
|
@ -2051,7 +2092,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
}
|
||||
}
|
||||
|
||||
private function sccp_create_sccp_backup() {
|
||||
private function sccp_create_sccp_backup()
|
||||
{
|
||||
global $amp_conf;
|
||||
$dir_info = array();
|
||||
$backup_files = array($amp_conf['ASTETCDIR'] . '/sccp', $amp_conf['ASTETCDIR'] . '/extensions', $amp_conf['ASTETCDIR'] . '/extconfig',
|
||||
|
@ -2104,7 +2146,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $filename;
|
||||
}
|
||||
|
||||
function sccp_create_sccp_init() {
|
||||
function sccp_create_sccp_init()
|
||||
{
|
||||
// Make sccp.conf data
|
||||
// [general]
|
||||
foreach ($this->sccpvalues as $key => $value) {
|
||||
|
@ -2139,7 +2182,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
// return $this-> sccp_conf_init;
|
||||
}
|
||||
|
||||
function getSccp_model_information($get = "all", $validate = false, $format_list = "all", $filter = array()) {
|
||||
function getSccp_model_information($get = "all", $validate = false, $format_list = "all", $filter = array())
|
||||
{
|
||||
// $file_ext = array('.loads', '.LOADS', '.sbn', '.SBN', '.bin', '.BIN','.zup','.ZUP');
|
||||
$file_ext = array('.loads', '.sbn', '.bin', '.zup');
|
||||
// $dir = $this->sccppath["tftp_path"];
|
||||
|
@ -2182,7 +2226,6 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
}
|
||||
break;
|
||||
case 'internal2':
|
||||
|
||||
break;
|
||||
case 'off':
|
||||
default: // Place in root TFTP dir
|
||||
|
@ -2233,7 +2276,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $raw_settings;
|
||||
}
|
||||
|
||||
function get_hint_info($sort = true, $filter = array()) {
|
||||
function get_hint_info($sort = true, $filter = array())
|
||||
{
|
||||
$res = array();
|
||||
$default_hint = '@ext-local';
|
||||
|
||||
|
@ -2277,7 +2321,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $res_sort;
|
||||
}
|
||||
|
||||
function getIP_information2($type = '') {
|
||||
function getIP_information2($type = '')
|
||||
{
|
||||
$interfaces = array();
|
||||
switch ($type) {
|
||||
case 'ip4':
|
||||
|
@ -2293,21 +2338,24 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
}
|
||||
foreach ($result as $line) {
|
||||
$vals = preg_split("/\s+/", $line);
|
||||
if ($vals[3] == "mtu")
|
||||
if ($vals[3] == "mtu") {
|
||||
continue;
|
||||
if ($vals[2] != "inet" && $vals[2] != "inet6")
|
||||
}
|
||||
if ($vals[2] != "inet" && $vals[2] != "inet6") {
|
||||
continue;
|
||||
}
|
||||
if (preg_match("/(.+?)(?:@.+)?:$/", $vals[1], $res)) {
|
||||
continue;
|
||||
}
|
||||
$ret = preg_match("/(\d*+.\d*+.\d*+.\d*+)[\/(\d*+)]*/", $vals[3], $ip);
|
||||
|
||||
$interfaces[$vals[1] . ':' . $vals[2]] = Array('name' => $vals[1], 'type' => $vals[2], 'ip' => ((empty($ip[1]) ? '' : $ip[1])));
|
||||
$interfaces[$vals[1] . ':' . $vals[2]] = array('name' => $vals[1], 'type' => $vals[2], 'ip' => ((empty($ip[1]) ? '' : $ip[1])));
|
||||
}
|
||||
return $interfaces;
|
||||
}
|
||||
|
||||
function getIP_information_old() {
|
||||
function getIP_information_old()
|
||||
{
|
||||
$interfaces['auto'] = array('0.0.0.0', 'All', '0');
|
||||
|
||||
exec("/sbin/ip -4 -o addr", $result, $ret);
|
||||
|
@ -2315,8 +2363,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
$vals = preg_split("/\s+/", $line);
|
||||
|
||||
// We only care about ipv4 (inet) lines, or definition lines
|
||||
if ($vals[2] != "inet" && $vals[3] != "mtu")
|
||||
if ($vals[2] != "inet" && $vals[3] != "mtu") {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (preg_match("/(.+?)(?:@.+)?:$/", $vals[1], $res)) { // Matches vlans, which are eth0.100@eth0
|
||||
// It's a network definition.
|
||||
|
@ -2343,19 +2392,23 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
return $interfaces;
|
||||
}
|
||||
|
||||
private function replaceSimpleXmlNode($xml, $element = SimpleXMLElement) {
|
||||
private function replaceSimpleXmlNode($xml, $element = SimpleXMLElement)
|
||||
{
|
||||
$dom = dom_import_simplexml($xml);
|
||||
$import = $dom->ownerDocument->importNode(
|
||||
dom_import_simplexml($element), TRUE
|
||||
dom_import_simplexml($element),
|
||||
true
|
||||
);
|
||||
$dom->parentNode->replaceChild($import, $dom);
|
||||
}
|
||||
|
||||
private function appendSimpleXmlNode($xml, $element = SimpleXMLElement) {
|
||||
private function appendSimpleXmlNode($xml, $element = SimpleXMLElement)
|
||||
{
|
||||
|
||||
$dom = dom_import_simplexml($xml);
|
||||
$import = $dom->ownerDocument->importNode(
|
||||
dom_import_simplexml($element), TRUE
|
||||
dom_import_simplexml($element),
|
||||
true
|
||||
);
|
||||
// $dom->parentNode->appendChild($import, $dom);
|
||||
$dom->parentNode->appendChild($import->cloneNode(true));
|
||||
|
@ -2365,7 +2418,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
// $dom = dom_import_simplexml($node);
|
||||
// $dom->parentNode->removeChild($dom);
|
||||
// }
|
||||
private function strpos_array($haystack, $needles) {
|
||||
private function strpos_array($haystack, $needles)
|
||||
{
|
||||
if (is_array($needles)) {
|
||||
foreach ($needles as $str) {
|
||||
if (is_array($str)) {
|
||||
|
@ -2373,19 +2427,20 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
} else {
|
||||
$pos = strpos($haystack, $str);
|
||||
}
|
||||
if ($pos !== FALSE) {
|
||||
if ($pos !== false) {
|
||||
return $pos;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return strpos($haystack, $needles);
|
||||
}
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
private function find_all_files($dir, $file_mask = null, $mode = 'full') {
|
||||
private function find_all_files($dir, $file_mask = null, $mode = 'full')
|
||||
{
|
||||
|
||||
$result = NULL;
|
||||
$result = null;
|
||||
if (empty($dir) || (!file_exists($dir))) {
|
||||
return $result;
|
||||
}
|
||||
|
@ -2434,5 +2489,4 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
|||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,109 +12,127 @@ namespace FreePBX\modules\Sccp_manager\aminterface;
|
|||
|
||||
// ************************************************************************** Event *********************************************
|
||||
|
||||
abstract class Event extends IncomingMessage {
|
||||
abstract class Event extends IncomingMessage
|
||||
{
|
||||
|
||||
protected $_events;
|
||||
|
||||
public function getName() {
|
||||
public function getName()
|
||||
{
|
||||
return $this->getKey('Event');
|
||||
}
|
||||
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
$this->_events = array();
|
||||
$this->_eventsCount = 0;
|
||||
// $this->_completed = !$this->isList();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class UnknownEvent extends Event {
|
||||
public function __construct($rawContent='') {
|
||||
class UnknownEvent extends Event
|
||||
{
|
||||
public function __construct($rawContent = '')
|
||||
{
|
||||
print_r($rawContent);
|
||||
// die();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class TableStart_Event extends Event {
|
||||
class TableStart_Event extends Event
|
||||
{
|
||||
|
||||
public function getTableName() {
|
||||
public function getTableName()
|
||||
{
|
||||
return $this->getKey('TableName');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class TableEnd_Event extends Event {
|
||||
class TableEnd_Event extends Event
|
||||
{
|
||||
|
||||
public function getTableName() {
|
||||
public function getTableName()
|
||||
{
|
||||
return $this->getKey('TableName');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPSoftKeySetEntry_Event extends Event {
|
||||
class SCCPSoftKeySetEntry_Event extends Event
|
||||
{
|
||||
|
||||
protected $_data;
|
||||
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPShowSoftKeySetsComplete_Event extends Event {
|
||||
class SCCPShowSoftKeySetsComplete_Event extends Event
|
||||
{
|
||||
|
||||
public function getListItems() {
|
||||
public function getListItems()
|
||||
{
|
||||
return intval($this->getKey('ListItems'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class ExtensionStatus_Event extends Event {
|
||||
class ExtensionStatus_Event extends Event
|
||||
{
|
||||
|
||||
public function getPrivilege() {
|
||||
public function getPrivilege()
|
||||
{
|
||||
return $this->getKey('Privilege');
|
||||
}
|
||||
|
||||
public function getExtension() {
|
||||
public function getExtension()
|
||||
{
|
||||
return $this->getKey('Exten');
|
||||
}
|
||||
|
||||
public function getContext() {
|
||||
public function getContext()
|
||||
{
|
||||
return $this->getKey('Context');
|
||||
}
|
||||
|
||||
public function getHint() {
|
||||
public function getHint()
|
||||
{
|
||||
return $this->getKey('Hint');
|
||||
}
|
||||
|
||||
public function getStatus() {
|
||||
public function getStatus()
|
||||
{
|
||||
return $this->getKey('Status');
|
||||
}
|
||||
}
|
||||
|
||||
class SCCPDeviceEntry_Event extends Event
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
class SCCPDeviceEntry_Event extends Event {
|
||||
class SCCPShowDeviceComplete_Event extends Event
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
class SCCPShowDeviceComplete_Event extends Event {
|
||||
|
||||
public function getListItems() {
|
||||
public function getListItems()
|
||||
{
|
||||
return intval($this->getKey('ListItems'));
|
||||
}
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
$this->_completed = $this->getKey('EventList');
|
||||
// return null;
|
||||
}
|
||||
}
|
||||
|
||||
class SCCPShowDevice_Event extends Event {
|
||||
class SCCPShowDevice_Event extends Event
|
||||
{
|
||||
|
||||
public function getCapabilities() {
|
||||
public function getCapabilities()
|
||||
{
|
||||
$ret = array();
|
||||
$codecs = explode(", ", substr($this->getKey('Capabilities'), 1, -1));
|
||||
foreach ($codecs as $codec) {
|
||||
|
@ -124,7 +142,8 @@ class SCCPShowDevice_Event extends Event {
|
|||
return $ret;
|
||||
}
|
||||
|
||||
public function getCodecsPreference() {
|
||||
public function getCodecsPreference()
|
||||
{
|
||||
$ret = array();
|
||||
$codecs = explode(", ", substr($this->getKey('CodecsPreference'), 1, -1));
|
||||
foreach ($codecs as $codec) {
|
||||
|
@ -133,25 +152,30 @@ class SCCPShowDevice_Event extends Event {
|
|||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPShowDevicesComplete_Event extends Event {
|
||||
class SCCPShowDevicesComplete_Event extends Event
|
||||
{
|
||||
|
||||
public function getListItems() {
|
||||
public function getListItems()
|
||||
{
|
||||
return intval($this->getKey('ListItems'));
|
||||
}
|
||||
|
||||
}
|
||||
class SCCPDeviceButtonEntry_Event extends Event {
|
||||
class SCCPDeviceButtonEntry_Event extends Event
|
||||
{
|
||||
}
|
||||
|
||||
class SCCPDeviceLineEntry_Event extends Event {
|
||||
class SCCPDeviceLineEntry_Event extends Event
|
||||
{
|
||||
}
|
||||
class SCCPDeviceStatisticsEntry_Event extends Event {
|
||||
class SCCPDeviceStatisticsEntry_Event extends Event
|
||||
{
|
||||
}
|
||||
class SCCPDeviceSpeeddialEntry_Event extends Event {
|
||||
class SCCPDeviceSpeeddialEntry_Event extends Event
|
||||
{
|
||||
}
|
||||
class ExtensionStateListComplete_Event extends Event {
|
||||
class ExtensionStateListComplete_Event extends Event
|
||||
{
|
||||
|
||||
}
|
|
@ -10,11 +10,13 @@
|
|||
|
||||
namespace FreePBX\modules\Sccp_manager\aminterface;
|
||||
|
||||
class AMIException extends \Exception {
|
||||
class AMIException extends \Exception
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
abstract class Message {
|
||||
abstract class Message
|
||||
{
|
||||
|
||||
const EOL = "\r\n";
|
||||
const EOM = "\r\n\r\n";
|
||||
|
@ -25,11 +27,12 @@ abstract class Message {
|
|||
protected $createdDate;
|
||||
private $_responseHandler;
|
||||
|
||||
public function _ToDebug($level,$msg) {
|
||||
|
||||
public function _ToDebug($level, $msg)
|
||||
{
|
||||
}
|
||||
|
||||
public function getResponseHandler() {
|
||||
public function getResponseHandler()
|
||||
{
|
||||
if (strlen($this->_responseHandler) > 0) {
|
||||
// throw new AMIException('Hier:' . $this->_responseHandler);
|
||||
return (string) $this->_responseHandler;
|
||||
|
@ -38,7 +41,8 @@ abstract class Message {
|
|||
}
|
||||
}
|
||||
|
||||
public function setResponseHandler($responseHandler) {
|
||||
public function setResponseHandler($responseHandler)
|
||||
{
|
||||
if (0 == strlen($responseHandler)) {
|
||||
return;
|
||||
}
|
||||
|
@ -50,7 +54,8 @@ abstract class Message {
|
|||
}
|
||||
}
|
||||
|
||||
public function setVariable($key, $value) {
|
||||
public function setVariable($key, $value)
|
||||
{
|
||||
$key = strtolower($key);
|
||||
$this->variables[$key] = $value;
|
||||
/* print_r('<br>----Set Value -------<br>');
|
||||
|
@ -59,7 +64,8 @@ abstract class Message {
|
|||
*/
|
||||
}
|
||||
|
||||
public function getVariable($key) {
|
||||
public function getVariable($key)
|
||||
{
|
||||
$key = strtolower($key);
|
||||
|
||||
if (!isset($this->variables[$key])) {
|
||||
|
@ -68,7 +74,8 @@ abstract class Message {
|
|||
return $this->variables[$key];
|
||||
}
|
||||
|
||||
protected function setKey($key, $value) {
|
||||
protected function setKey($key, $value)
|
||||
{
|
||||
$key = strtolower((string) $key);
|
||||
$this->keys[$key] = (string) $value;
|
||||
/*
|
||||
|
@ -79,7 +86,8 @@ abstract class Message {
|
|||
*/
|
||||
}
|
||||
|
||||
public function getKey($key) {
|
||||
public function getKey($key)
|
||||
{
|
||||
$key = strtolower($key);
|
||||
if (!isset($this->keys[$key])) {
|
||||
return null;
|
||||
|
@ -88,23 +96,28 @@ abstract class Message {
|
|||
return $this->keys[$key];
|
||||
}
|
||||
|
||||
public function getVariables() {
|
||||
public function getVariables()
|
||||
{
|
||||
return $this->variables;
|
||||
}
|
||||
|
||||
public function getActionID() {
|
||||
public function getActionID()
|
||||
{
|
||||
return $this->getKey('ActionID');
|
||||
}
|
||||
|
||||
public function getKeys() {
|
||||
public function getKeys()
|
||||
{
|
||||
return $this->keys;
|
||||
}
|
||||
|
||||
private function serializeVariable($key, $value) {
|
||||
private function serializeVariable($key, $value)
|
||||
{
|
||||
return "Variable: $key=$value";
|
||||
}
|
||||
|
||||
protected function setSanitizedKey($key, $value) {
|
||||
protected function setSanitizedKey($key, $value)
|
||||
{
|
||||
$key = strtolower((string) $key);
|
||||
$_string_key = array('actionid', 'descr');
|
||||
if (array_search($key, $_string_key) !== false) {
|
||||
|
@ -114,13 +127,14 @@ abstract class Message {
|
|||
}
|
||||
}
|
||||
|
||||
protected function sanitizeInput($value, $prefered_type = '') {
|
||||
protected function sanitizeInput($value, $prefered_type = '')
|
||||
{
|
||||
if ($prefered_type == '') {
|
||||
if (!isset($value) || $value === NULL || strlen($value) == 0) {
|
||||
return NULL;
|
||||
} else if (is_numeric($value)) {
|
||||
if (!isset($value) || $value === null || strlen($value) == 0) {
|
||||
return null;
|
||||
} elseif (is_numeric($value)) {
|
||||
$prefered_type = 'numeric';
|
||||
} else if (is_string($value)) {
|
||||
} elseif (is_string($value)) {
|
||||
$prefered_type = 'string';
|
||||
} else {
|
||||
throw new AMIException("Don't know how to convert: '" . $value . "'\n");
|
||||
|
@ -129,26 +143,26 @@ abstract class Message {
|
|||
if ($prefered_type !== '') {
|
||||
switch ($prefered_type) {
|
||||
case 'string':
|
||||
if (!isset($value) || $value === NULL || strlen($value) == 0) {
|
||||
if (!isset($value) || $value === null || strlen($value) == 0) {
|
||||
return '';
|
||||
}
|
||||
if (filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) {
|
||||
return (boolean) $value;
|
||||
} else if (filter_var($value, FILTER_SANITIZE_STRING, FILTER_NULL_ON_FAILURE)) {
|
||||
} elseif (filter_var($value, FILTER_SANITIZE_STRING, FILTER_NULL_ON_FAILURE)) {
|
||||
return (string) $value;
|
||||
} else if (filter_var($value, FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_NULL_ON_FAILURE)) {
|
||||
} elseif (filter_var($value, FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_NULL_ON_FAILURE)) {
|
||||
return (string) htmlspecialchars($value, ENT_QUOTES);
|
||||
} else {
|
||||
throw new AMIException("Incoming String is not sanitary. Skipping: '" . $value . "'\n");
|
||||
}
|
||||
break;
|
||||
case 'numeric':
|
||||
if (!isset($value) || $value === NULL || strlen($value) == 0) {
|
||||
if (!isset($value) || $value === null || strlen($value) == 0) {
|
||||
return 0;
|
||||
}
|
||||
if (filter_var($value, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX | FILTER_FLAG_ALLOW_OCTAL)) {
|
||||
return intval($value, 0);
|
||||
} else if (filter_var($value, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND | FILTER_FLAG_ALLOW_SCIENTIFIC)) {
|
||||
} elseif (filter_var($value, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND | FILTER_FLAG_ALLOW_SCIENTIFIC)) {
|
||||
return (float) $value;
|
||||
} else {
|
||||
return (double) $value;
|
||||
|
@ -160,11 +174,13 @@ abstract class Message {
|
|||
}
|
||||
}
|
||||
|
||||
protected function finishMessage($message) {
|
||||
protected function finishMessage($message)
|
||||
{
|
||||
return $message . self::EOL . self::EOL;
|
||||
}
|
||||
|
||||
public function serialize() {
|
||||
public function serialize()
|
||||
{
|
||||
$result = array();
|
||||
foreach ($this->getKeys() as $k => $v) {
|
||||
$result[] = $k . ': ' . $v;
|
||||
|
@ -182,7 +198,8 @@ abstract class Message {
|
|||
return $mStr;
|
||||
}
|
||||
|
||||
public function setActionID($actionID) {
|
||||
public function setActionID($actionID)
|
||||
{
|
||||
if (0 == strlen($actionID)) {
|
||||
throw new AMIException('ActionID cannot be empty.');
|
||||
return;
|
||||
|
@ -196,38 +213,44 @@ abstract class Message {
|
|||
$this->setKey('ActionID', $actionID);
|
||||
}
|
||||
|
||||
public function __sleep() {
|
||||
public function __sleep()
|
||||
{
|
||||
return array('lines', 'variables', 'keys', 'createdDate');
|
||||
}
|
||||
|
||||
public function __construct() {
|
||||
public function __construct()
|
||||
{
|
||||
$this->lines = array();
|
||||
$this->variables = array();
|
||||
$this->keys = array();
|
||||
$this->createdDate = time();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
abstract class IncomingMessage extends Message {
|
||||
abstract class IncomingMessage extends Message
|
||||
{
|
||||
|
||||
protected $rawContent;
|
||||
|
||||
public function getEventList() {
|
||||
public function getEventList()
|
||||
{
|
||||
return $this->getKey('EventList');
|
||||
}
|
||||
|
||||
public function getRawContent() {
|
||||
public function getRawContent()
|
||||
{
|
||||
return $this->rawContent;
|
||||
}
|
||||
|
||||
public function __sleep() {
|
||||
public function __sleep()
|
||||
{
|
||||
$ret = parent::__sleep();
|
||||
$ret[] = 'rawContent';
|
||||
return $ret;
|
||||
}
|
||||
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct();
|
||||
$this->rawContent = $rawContent;
|
||||
$lines = explode(Message::EOL, $rawContent);
|
||||
|
@ -243,11 +266,11 @@ abstract class IncomingMessage extends Message {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// namespace FreePBX\modules\Sccp_manager\aminterface\Message;
|
||||
class LoginAction extends ActionMessage {
|
||||
class LoginAction extends ActionMessage
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
|
@ -257,111 +280,122 @@ class LoginAction extends ActionMessage {
|
|||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($user, $password) {
|
||||
public function __construct($user, $password)
|
||||
{
|
||||
parent::__construct('Login');
|
||||
$this->setKey('Username', $user);
|
||||
$this->setKey('Secret', $password);
|
||||
$this->setKey('Events', 'off'); // &----
|
||||
$this->setResponseHandler('Login');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
abstract class ActionMessage extends Message {
|
||||
abstract class ActionMessage extends Message
|
||||
{
|
||||
|
||||
public function __construct($what) {
|
||||
public function __construct($what)
|
||||
{
|
||||
parent::__construct();
|
||||
$this->setKey('Action', $what);
|
||||
$this->setKey('ActionID', microtime(true));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class CommandAction extends ActionMessage {
|
||||
public function __construct($command) {
|
||||
class CommandAction extends ActionMessage
|
||||
{
|
||||
public function __construct($command)
|
||||
{
|
||||
parent::__construct('Command');
|
||||
$this->setKey('Command', $command);
|
||||
$this->setResponseHandler("Command");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class ReloadAction extends ActionMessage {
|
||||
class ReloadAction extends ActionMessage
|
||||
{
|
||||
|
||||
public function __construct($module = false) {
|
||||
public function __construct($module = false)
|
||||
{
|
||||
parent::__construct('Reload');
|
||||
if ($module !== false) {
|
||||
$this->setKey('Module', $module);
|
||||
$this->setResponseHandler("Generic");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class ExtensionStateListAction extends ActionMessage {
|
||||
class ExtensionStateListAction extends ActionMessage
|
||||
{
|
||||
|
||||
public function __construct() {
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('ExtensionStateList');
|
||||
$this->setKey('Segment', 'general');
|
||||
$this->setKey('ResultFormat', 'command');
|
||||
$this->setResponseHandler("ExtensionStateList");
|
||||
}
|
||||
|
||||
}
|
||||
class SCCPShowGlobalsAction extends ActionMessage {
|
||||
class SCCPShowGlobalsAction extends ActionMessage
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('SCCPShowGlobals');
|
||||
}
|
||||
}
|
||||
|
||||
class SCCPShowSoftkeySetsAction extends ActionMessage {
|
||||
class SCCPShowSoftkeySetsAction extends ActionMessage
|
||||
{
|
||||
|
||||
public function __construct() {
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('SCCPShowSoftkeySets');
|
||||
$this->setKey('Segment', 'general');
|
||||
$this->setKey('ResultFormat', 'command');
|
||||
$this->setResponseHandler("SCCPShowSoftkeySets");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPShowDeviceAction extends ActionMessage {
|
||||
class SCCPShowDeviceAction extends ActionMessage
|
||||
{
|
||||
|
||||
public function __construct($devicename) {
|
||||
public function __construct($devicename)
|
||||
{
|
||||
parent::__construct('SCCPShowDevice');
|
||||
$this->setKey('Segment', 'general');
|
||||
$this->setKey('ResultFormat', 'command');
|
||||
$this->setKey('DeviceName', $devicename);
|
||||
$this->setResponseHandler("SCCPShowDevice");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPShowDevicesAction extends ActionMessage {
|
||||
class SCCPShowDevicesAction extends ActionMessage
|
||||
{
|
||||
|
||||
public function __construct() {
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('SCCPShowDevices');
|
||||
$this->setKey('Segment', 'general');
|
||||
$this->setKey('ResultFormat', 'command');
|
||||
$this->setResponseHandler("SCCPShowDevices");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPTokenAckAction extends ActionMessage {
|
||||
class SCCPTokenAckAction extends ActionMessage
|
||||
{
|
||||
|
||||
public function __construct($DeviceName) {
|
||||
public function __construct($DeviceName)
|
||||
{
|
||||
parent::__construct('SCCPTokenAck');
|
||||
$this->setKey('DeviceId', $DeviceName);
|
||||
$this->setResponseHandler("SCCPGeneric");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPDeviceRestartAction extends ActionMessage {
|
||||
class SCCPDeviceRestartAction extends ActionMessage
|
||||
{
|
||||
|
||||
public function __construct($DeviceName, $Type = "restart") {
|
||||
public function __construct($DeviceName, $Type = "restart")
|
||||
{
|
||||
parent::__construct('SCCPDeviceRestart');
|
||||
$this->setResponseHandler("SCCPGeneric");
|
||||
if (empty($Type)) {
|
||||
|
@ -374,18 +408,16 @@ class SCCPDeviceRestartAction extends ActionMessage {
|
|||
throw new Exception('Param2 has to be one of \'restart\', \'full\', \'reset\'.');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPConfigMetaDataAction extends ActionMessage
|
||||
{
|
||||
public function __construct($segment=false)
|
||||
public function __construct($segment = false)
|
||||
{
|
||||
parent::__construct('SCCPConfigMetaData');
|
||||
if ($segment != false) {
|
||||
$this->setKey('Segment', $segment);
|
||||
$this->setKey('Segment', $segment);
|
||||
}
|
||||
$this->setResponseHandler("SCCPGeneric");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,17 +14,20 @@ namespace FreePBX\modules\Sccp_manager\aminterface;
|
|||
|
||||
namespace FreePBX\modules\Sccp_manager\aminterface;
|
||||
|
||||
abstract class Response extends IncomingMessage {
|
||||
abstract class Response extends IncomingMessage
|
||||
{
|
||||
|
||||
protected $_events;
|
||||
protected $_completed;
|
||||
protected $keys;
|
||||
|
||||
public function isComplete() {
|
||||
public function isComplete()
|
||||
{
|
||||
return $this->_completed;
|
||||
}
|
||||
|
||||
public function __sleep() {
|
||||
public function __sleep()
|
||||
{
|
||||
$ret = parent::__sleep();
|
||||
$ret[] = '_completed';
|
||||
$ret[] = '_events';
|
||||
|
@ -34,8 +37,7 @@ abstract class Response extends IncomingMessage {
|
|||
public function addEvent($event)
|
||||
{
|
||||
$this->_events[] = $event;
|
||||
if (
|
||||
stristr($event->getEventList(), 'complete') !== false
|
||||
if (stristr($event->getEventList(), 'complete') !== false
|
||||
|| stristr($event->getName(), 'complete') !== false
|
||||
|| stristr($event->getName(), 'DBGetResponse') !== false
|
||||
) {
|
||||
|
@ -71,7 +73,8 @@ abstract class Response extends IncomingMessage {
|
|||
}
|
||||
|
||||
|
||||
public function getVariable($_rawContent, $_fields='') {
|
||||
public function getVariable($_rawContent, $_fields = '')
|
||||
{
|
||||
$lines = explode(Message::EOL, $_rawContent);
|
||||
foreach ($_fields as $key => $value) {
|
||||
foreach ($lines as $data) {
|
||||
|
@ -83,37 +86,42 @@ abstract class Response extends IncomingMessage {
|
|||
}
|
||||
}
|
||||
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
$this->_events = array();
|
||||
$this->_eventsCount = 0;
|
||||
$this->_completed = !$this->isList();
|
||||
}
|
||||
|
||||
}
|
||||
//****************************************************************************
|
||||
class Generic_Response extends Response {
|
||||
class Generic_Response extends Response
|
||||
{
|
||||
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
// print_r('<br>---- r --<br>');
|
||||
// print_r($rawContent);
|
||||
}
|
||||
}
|
||||
|
||||
class Login_Response extends Response {
|
||||
class Login_Response extends Response
|
||||
{
|
||||
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
return $this->isSuccess();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Command_Response extends Response {
|
||||
class Command_Response extends Response
|
||||
{
|
||||
private $_temptable;
|
||||
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
// print_r('<br>---- r --<br>');
|
||||
// print_r($rawContent);
|
||||
// print_r('<br>---- re --<br>');
|
||||
|
@ -125,26 +133,27 @@ class Command_Response extends Response {
|
|||
$content = explode(':', $line);
|
||||
if (is_array($content)) {
|
||||
switch (strtolower($content[0])) {
|
||||
case 'output':
|
||||
$_tmp_str = trim(substr($line,7));
|
||||
if (!empty($_tmp_str)){
|
||||
$this->_temptable['output'][]= trim(substr($line,7));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$this->_temptable[$content[0]][]= trim(substr($line,strlen($content[0])+1));
|
||||
break;
|
||||
case 'output':
|
||||
$_tmp_str = trim(substr($line, 7));
|
||||
if (!empty($_tmp_str)) {
|
||||
$this->_temptable['output'][]= trim(substr($line, 7));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$this->_temptable[$content[0]][]= trim(substr($line, strlen($content[0])+1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($this->_temptable)){
|
||||
if (!empty($this->_temptable)) {
|
||||
$this->setKey('output', 'array');
|
||||
}
|
||||
|
||||
$this->_completed = $this->isSuccess();
|
||||
// return $this->isSuccess();
|
||||
}
|
||||
public function getResult() {
|
||||
public function getResult()
|
||||
{
|
||||
if (stristr($this->getKey('output'), 'array') !== false) {
|
||||
$result = $this->_temptable;
|
||||
} else {
|
||||
|
@ -152,15 +161,16 @@ class Command_Response extends Response {
|
|||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPGeneric_Response extends Response {
|
||||
class SCCPGeneric_Response extends Response
|
||||
{
|
||||
|
||||
protected $_tables;
|
||||
private $_temptable;
|
||||
|
||||
public function addEvent($event) {
|
||||
public function addEvent($event)
|
||||
{
|
||||
// not eventlist (start/complete)
|
||||
// print_r('<br>---- addEvent --<br>');
|
||||
// print_r($event);
|
||||
|
@ -175,13 +185,13 @@ class SCCPGeneric_Response extends Response {
|
|||
$this->_temptable = array();
|
||||
$this->_temptable['Name'] = $event->getTableName();
|
||||
$this->_temptable['Entries'] = array();
|
||||
} else if (stristr($event->getName(), 'TableEnd') != false) {
|
||||
} elseif (stristr($event->getName(), 'TableEnd') != false) {
|
||||
if (!is_array($this->_tables)) {
|
||||
$this->_tables = array();
|
||||
}
|
||||
$this->_tables[$event->getTableName()] = $this->_temptable;
|
||||
unset($this->_temptable);
|
||||
} else if (is_array($this->_temptable)) {
|
||||
} elseif (is_array($this->_temptable)) {
|
||||
$this->_temptable['Entries'][] = $event;
|
||||
} else {
|
||||
// add regular event
|
||||
|
@ -193,25 +203,25 @@ class SCCPGeneric_Response extends Response {
|
|||
}
|
||||
}
|
||||
// finish eventlist
|
||||
if (
|
||||
stristr($event->getEventList(), 'complete') != false || stristr($event->getName(), 'complete') != false
|
||||
if (stristr($event->getEventList(), 'complete') != false || stristr($event->getName(), 'complete') != false
|
||||
) {
|
||||
$this->_completed = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected function ConvertTableData($_tablename,$_fkey,$_fields) {
|
||||
protected function ConvertTableData($_tablename, $_fkey, $_fields)
|
||||
{
|
||||
$_rawtable = $this->Table2Array($_tablename);
|
||||
$result = array();
|
||||
foreach ($_rawtable as $_row) {
|
||||
$all_key_ok = true;
|
||||
if (is_array($_fkey)){
|
||||
if (is_array($_fkey)) {
|
||||
foreach ($_fkey as $_fid) {
|
||||
if (empty($_row[$_fid])) {
|
||||
$all_key_ok = false;
|
||||
} else {
|
||||
$set_name[$_fid] = $_row[$_fid];
|
||||
}
|
||||
if (empty($_row[$_fid])) {
|
||||
$all_key_ok = false;
|
||||
} else {
|
||||
$set_name[$_fid] = $_row[$_fid];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (empty($_row[$_fkey])) {
|
||||
|
@ -233,20 +243,21 @@ class SCCPGeneric_Response extends Response {
|
|||
return $result;
|
||||
}
|
||||
|
||||
protected function ConvertEventData($_fkey,$_fields) {
|
||||
protected function ConvertEventData($_fkey, $_fields)
|
||||
{
|
||||
$result = array();
|
||||
|
||||
foreach ($this->_events as $_row) {
|
||||
$all_key_ok = true;
|
||||
$tmp_result = $_row->getKeys();
|
||||
$set_name = array();
|
||||
if (is_array($_fkey)){
|
||||
if (is_array($_fkey)) {
|
||||
foreach ($_fkey as $_fid) {
|
||||
if (empty($tmp_result[$_fid])) {
|
||||
$all_key_ok = false;
|
||||
} else {
|
||||
$set_name[$_fid] = $tmp_result[$_fid];
|
||||
}
|
||||
if (empty($tmp_result[$_fid])) {
|
||||
$all_key_ok = false;
|
||||
} else {
|
||||
$set_name[$_fid] = $tmp_result[$_fid];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (empty($tmp_result[$_fkey])) {
|
||||
|
@ -271,20 +282,20 @@ class SCCPGeneric_Response extends Response {
|
|||
|
||||
public function hasTable()
|
||||
{
|
||||
if (is_array($this->_tables)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
if (is_array($this->_tables)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public function getTableNames()
|
||||
{
|
||||
return (is_array($this->_tables)) ? array_keys($this->_tables) : null;
|
||||
return (is_array($this->_tables)) ? array_keys($this->_tables) : null;
|
||||
}
|
||||
|
||||
public function Table2Array($tablename = '')
|
||||
{
|
||||
$result =array();
|
||||
if ( !is_string($tablename) || empty($tablename)){
|
||||
if (!is_string($tablename) || empty($tablename)) {
|
||||
return false;
|
||||
}
|
||||
if ($this->hasTable()) {
|
||||
|
@ -303,7 +314,7 @@ class SCCPGeneric_Response extends Response {
|
|||
foreach ($this->_events as $trow) {
|
||||
$tmp_result = $trow->getKeys();
|
||||
if (is_array($tmp_result)) {
|
||||
$result = array_merge($result,$tmp_result);
|
||||
$result = array_merge($result, $tmp_result);
|
||||
} else {
|
||||
$result [] = $tmp_result;
|
||||
}
|
||||
|
@ -317,42 +328,44 @@ class SCCPGeneric_Response extends Response {
|
|||
public function getTable($tablename)
|
||||
{
|
||||
if ($this->hasTable() && array_key_exists($tablename, $this->_tables)) {
|
||||
return $this->_tables[$tablename];
|
||||
return $this->_tables[$tablename];
|
||||
}
|
||||
throw new PAMIException("No such table.");
|
||||
throw new PAMIException("No such table.");
|
||||
}
|
||||
public function getJSON()
|
||||
{
|
||||
if (strlen($this->getKey('JSON')) > 0) {
|
||||
if (($json = json_decode($this->getKey('JSON'), true)) != false) {
|
||||
return $json;
|
||||
}
|
||||
}
|
||||
throw new AMIException("No JSON Key found to return.");
|
||||
}
|
||||
if (strlen($this->getKey('JSON')) > 0) {
|
||||
if (($json = json_decode($this->getKey('JSON'), true)) != false) {
|
||||
return $json;
|
||||
}
|
||||
}
|
||||
throw new AMIException("No JSON Key found to return.");
|
||||
}
|
||||
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
$_fields = array("EventList" => "EventList:", "Message" => "Message:");
|
||||
// $this->getVariable($rawContent, $_fields);
|
||||
$this->_completed = !$this->isList();
|
||||
}
|
||||
|
||||
public function getResult() {
|
||||
public function getResult()
|
||||
{
|
||||
if ($this->getKey('JSON') != null) {
|
||||
$result = $this->getJSON();
|
||||
} else {
|
||||
$result = $this->getMessage ();
|
||||
$result = $this->getMessage();
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class SCCPJSON_Response extends Response {
|
||||
class SCCPJSON_Response extends Response
|
||||
{
|
||||
|
||||
public function __construct($rawContent) {
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
$_fields = array("DataType" => "DataType:", "JSONRAW" => "JSON:");
|
||||
$this->getVariable($rawContent, $_fields);
|
||||
|
@ -362,71 +375,93 @@ class SCCPJSON_Response extends Response {
|
|||
}
|
||||
return $this->isSuccess();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPShowSoftkeySets_Response extends SCCPGeneric_Response {
|
||||
public function __construct($rawContent) {
|
||||
class SCCPShowSoftkeySets_Response extends SCCPGeneric_Response
|
||||
{
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
|
||||
}
|
||||
public function getResult() {
|
||||
public function getResult()
|
||||
{
|
||||
$_fields = array('description'=>'description','label'=>'label','lblid'=>'lblid');
|
||||
$result = $this->ConvertTableData('SoftKeySets',array('set','mode'),$_fields);
|
||||
$result = $this->ConvertTableData('SoftKeySets', array('set','mode'), $_fields);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPShowDevices_Response extends SCCPGeneric_Response {
|
||||
public function __construct($rawContent) {
|
||||
class SCCPShowDevices_Response extends SCCPGeneric_Response
|
||||
{
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
}
|
||||
public function getResult() {
|
||||
public function getResult()
|
||||
{
|
||||
$_fields = array('mac'=>'mac','address'=>'address','descr'=>'descr','regstate'=>'status',
|
||||
'token'=>'token','act'=>'act', 'lines'=>'lines','nat'=>'nat','regtime'=>'regtime');
|
||||
$result = $this->ConvertTableData('Devices',array('mac'),$_fields);
|
||||
$result = $this->ConvertTableData('Devices', array('mac'), $_fields);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SCCPShowDevice_Response extends SCCPGeneric_Response {
|
||||
public function __construct($rawContent) {
|
||||
class SCCPShowDevice_Response extends SCCPGeneric_Response
|
||||
{
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
}
|
||||
public function getResult() {
|
||||
public function getResult()
|
||||
{
|
||||
$result = array();
|
||||
$result = $this->Events2Array();
|
||||
$result['Buttons'] = $this->ConvertTableData('Buttons', array('id'),
|
||||
array('id'=>'id','channelobjecttype'=>'channelobjecttype','inst'=>'inst',
|
||||
'typestr'=>'typestr','type'=>'type','pendupdt'=>'pendupdt','penddel'=>'penddel', 'default'=>'default'));
|
||||
$result['SpeeddialButtons'] = $this->ConvertTableData('Buttons', array('id'),
|
||||
array('id'=>'id','channelobjecttype'=>'channelobjecttype','name'=>'name','number'=>'number','hint'=>'hint'));
|
||||
$result['CallStatistics'] = $this->ConvertTableData('CallStatistics', array('type'),
|
||||
array('type'=>'type','channelobjecttype'=>'channelobjecttype','calls'=>'calls','pcktsnt'=>'pcktsnt','pcktrcvd'=>'pcktrcvd',
|
||||
$result['Buttons'] = $this->ConvertTableData(
|
||||
'Buttons',
|
||||
array('id'),
|
||||
array('id'=>'id','channelobjecttype'=>'channelobjecttype','inst'=>'inst',
|
||||
'typestr'=>'typestr',
|
||||
'type'=>'type',
|
||||
'pendupdt'=>'pendupdt',
|
||||
'penddel'=>'penddel',
|
||||
'default'=>'default')
|
||||
);
|
||||
$result['SpeeddialButtons'] = $this->ConvertTableData(
|
||||
'Buttons',
|
||||
array('id'),
|
||||
array('id'=>'id','channelobjecttype'=>'channelobjecttype','name'=>'name','number'=>'number','hint'=>'hint')
|
||||
);
|
||||
$result['CallStatistics'] = $this->ConvertTableData(
|
||||
'CallStatistics',
|
||||
array('type'),
|
||||
array('type'=>'type','channelobjecttype'=>'channelobjecttype','calls'=>'calls','pcktsnt'=>'pcktsnt','pcktrcvd'=>'pcktrcvd',
|
||||
'lost'=>'lost','jitter'=>'jitter','latency'=>'latency', 'quality'=>'quality','avgqual'=>'avgqual','meanqual'=>'meanqual',
|
||||
'maxqual'=>'maxqual','rconceal'=>'rconceal','sconceal'=>'sconceal'));
|
||||
$result['SCCP_Vendor'] = Array('vendor' => strtok($result['skinnyphonetype'], ' '), 'model' => strtok('('),
|
||||
'maxqual'=>'maxqual',
|
||||
'rconceal'=>'rconceal',
|
||||
'sconceal'=>'sconceal')
|
||||
);
|
||||
$result['SCCP_Vendor'] = array('vendor' => strtok($result['skinnyphonetype'], ' '), 'model' => strtok('('),
|
||||
'model_id' => strtok(')'), 'vendor_addon' => strtok($result['configphonetype'], ' '),
|
||||
'model_addon' => strtok(' '));
|
||||
if (empty($result['SCCP_Vendor']['vendor']) || $result['SCCP_Vendor']['vendor'] == 'Undefined') {
|
||||
$result['SCCP_Vendor'] = Array('vendor' => 'Undefined', 'model' => $result['configphonetype'],
|
||||
$result['SCCP_Vendor'] = array('vendor' => 'Undefined', 'model' => $result['configphonetype'],
|
||||
'model_id' => '', 'vendor_addon' => $result['SCCP_Vendor']['vendor_addon'],
|
||||
'model_addon' => $result['SCCP_Vendor']['model_addon']);
|
||||
}
|
||||
$result['MAC_Address'] =$result['macaddress'];
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class ExtensionStateList_Response extends SCCPGeneric_Response {
|
||||
public function __construct($rawContent) {
|
||||
class ExtensionStateList_Response extends SCCPGeneric_Response
|
||||
{
|
||||
public function __construct($rawContent)
|
||||
{
|
||||
parent::__construct($rawContent);
|
||||
}
|
||||
public function getResult() {
|
||||
$result = $this->ConvertEventData(array('exten','context'),array('exten','context','hint','status','statustext'));
|
||||
public function getResult()
|
||||
{
|
||||
$result = $this->ConvertEventData(array('exten','context'), array('exten','context','hint','status','statustext'));
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
|
||||
namespace FreePBX\modules\Sccp_manager;
|
||||
|
||||
|
||||
class aminterface {
|
||||
class aminterface
|
||||
{
|
||||
|
||||
var $_socket;
|
||||
var $_error;
|
||||
|
@ -29,7 +29,8 @@ class aminterface {
|
|||
private $_responseFactory;
|
||||
private $debug_level = 1;
|
||||
|
||||
public function load_subspace($parent_class = null) {
|
||||
public function load_subspace($parent_class = null)
|
||||
{
|
||||
$driverNamespace = "\\FreePBX\\Modules\\Sccp_manager\\aminterface";
|
||||
|
||||
$drivers = array('Message' => 'Message.class.php', 'Response' => 'Response.class.php', 'Event' => 'Event.class.php');
|
||||
|
@ -37,7 +38,6 @@ class aminterface {
|
|||
$class = $driverNamespace . "\\" . $key;
|
||||
$driver = __DIR__ . "/" . $value;
|
||||
if (!class_exists($class, false)) {
|
||||
|
||||
if (file_exists($driver)) {
|
||||
include(__DIR__ . "/" . $value);
|
||||
} else {
|
||||
|
@ -47,7 +47,8 @@ class aminterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function __construct($parent_class = null) {
|
||||
public function __construct($parent_class = null)
|
||||
{
|
||||
global $amp_conf;
|
||||
$this->paren_class = $parent_class;
|
||||
$this->_socket = false;
|
||||
|
@ -57,10 +58,10 @@ class aminterface {
|
|||
|
||||
|
||||
$this->_eventListeners = array();
|
||||
// $this->_eventFactory = new EventFactoryImpl(\Logger::getLogger('EventFactory'));
|
||||
// $this->_responseFactory = new ResponseFactoryImpl(\Logger::getLogger('ResponseFactory'));
|
||||
$this->_incomingQueue = array();
|
||||
$this->_lastActionId = false;
|
||||
// $this->_eventFactory = new EventFactoryImpl(\Logger::getLogger('EventFactory'));
|
||||
// $this->_responseFactory = new ResponseFactoryImpl(\Logger::getLogger('ResponseFactory'));
|
||||
$this->_incomingQueue = array();
|
||||
$this->_lastActionId = false;
|
||||
|
||||
$fld_conf = array('user' => 'AMPMGRUSER', 'pass' => 'AMPMGRPASS');
|
||||
if (isset($amp_conf['AMPMGRUSER'])) {
|
||||
|
@ -75,19 +76,23 @@ class aminterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function status() {
|
||||
public function status()
|
||||
{
|
||||
if ($this->_config['enabled']) {
|
||||
return true;
|
||||
} else {return false;}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function info() {
|
||||
public function info()
|
||||
{
|
||||
$Ver = '13.0.4';
|
||||
if ($this->_config['enabled']) {
|
||||
return Array('Version' => $Ver,
|
||||
return array('Version' => $Ver,
|
||||
'about' => 'AMI data ver: ' . $Ver, 'test' => get_declared_classes());
|
||||
} else {
|
||||
return Array('Version' => $Ver,
|
||||
return array('Version' => $Ver,
|
||||
'about' => 'Disabled AMI ver: ' . $Ver);
|
||||
}
|
||||
}
|
||||
|
@ -96,15 +101,20 @@ class aminterface {
|
|||
* Opens a tcp connection to ami.
|
||||
*
|
||||
*/
|
||||
public function open() {
|
||||
public function open()
|
||||
{
|
||||
$cString = $this->_config['tsoket'] . $this->_config['host'] . ':' . $this->_config['port'];
|
||||
$this->_context = stream_context_create();
|
||||
$errno = 0;
|
||||
$errstr = '';
|
||||
$this->_ProcessingMessage = '';
|
||||
$this->_socket = @stream_socket_client(
|
||||
$cString, $errno, $errstr,
|
||||
$this->_config['timeout'], STREAM_CLIENT_CONNECT, $this->_context
|
||||
$cString,
|
||||
$errno,
|
||||
$errstr,
|
||||
$this->_config['timeout'],
|
||||
STREAM_CLIENT_CONNECT,
|
||||
$this->_context
|
||||
);
|
||||
if ($this->_socket === false) {
|
||||
$this->_errorException('Error connecting to ami: ' . $errstr . $cString);
|
||||
|
@ -129,13 +139,15 @@ class aminterface {
|
|||
/**
|
||||
* Closes the connection to ami.
|
||||
*/
|
||||
public function close() {
|
||||
public function close()
|
||||
{
|
||||
$this->_connect_state = false;
|
||||
$this->_ProcessingMessage = '';
|
||||
@stream_socket_shutdown($this->_socket, STREAM_SHUT_RDWR);
|
||||
}
|
||||
|
||||
public function send($message) {
|
||||
public function send($message)
|
||||
{
|
||||
$messageToSend = $message->serialize();
|
||||
$length = strlen($messageToSend);
|
||||
$this->_countE = 0;
|
||||
|
@ -171,7 +183,8 @@ class aminterface {
|
|||
$this->_errorException("Read waittime: " . ($this->socket_param['timeout']) . " exceeded (timeout).\n");
|
||||
}
|
||||
|
||||
protected function getRelated($message) {
|
||||
protected function getRelated($message)
|
||||
{
|
||||
$ret = false;
|
||||
$id = 0;
|
||||
$id = $message->getActionID('ActionID');
|
||||
|
@ -185,11 +198,13 @@ class aminterface {
|
|||
return $ret;
|
||||
}
|
||||
|
||||
private function _messageToEvent($msg) {
|
||||
private function _messageToEvent($msg)
|
||||
{
|
||||
return $this->_eventFromRaw($msg);
|
||||
}
|
||||
|
||||
protected function getMessages() {
|
||||
protected function getMessages()
|
||||
{
|
||||
$msgs = array();
|
||||
// Read something.
|
||||
$read = @fread($this->_socket, 65535);
|
||||
|
@ -200,28 +215,30 @@ class aminterface {
|
|||
if ($read == "") {
|
||||
usleep(100);
|
||||
} else {
|
||||
$this->_msgToDebug(98,'--- Not Empy AMI MSG --- ');
|
||||
$this->_msgToDebug(98, '--- Not Empy AMI MSG --- ');
|
||||
}
|
||||
$this->_ProcessingMessage .= $read;
|
||||
$this->_DumpMessage .= $read;
|
||||
while (($marker = strpos($this->_ProcessingMessage, aminterface\Message::EOM))) {
|
||||
$msg = substr($this->_ProcessingMessage, 0, $marker);
|
||||
$this->_ProcessingMessage = substr(
|
||||
$this->_ProcessingMessage, $marker + strlen(aminterface\Message::EOM)
|
||||
$this->_ProcessingMessage,
|
||||
$marker + strlen(aminterface\Message::EOM)
|
||||
);
|
||||
$msgs[] = $msg;
|
||||
}
|
||||
return $msgs;
|
||||
}
|
||||
|
||||
public function process() {
|
||||
public function process()
|
||||
{
|
||||
$msgs = $this->getMessages();
|
||||
$this->_msgToDebug(90,$msgs);
|
||||
$this->_msgToDebug(90, $msgs);
|
||||
$this->_countE++;
|
||||
if ($this->_countE > 10000) {
|
||||
$this->_msgToDebug(9,'--- Procecc Die, Dump --- ');
|
||||
$this->_msgToDebug(9,$this->_DumpMessage);
|
||||
$this->_msgToDebug(9,'--- END Procecc Die, Dump --- ');
|
||||
$this->_msgToDebug(9, '--- Procecc Die, Dump --- ');
|
||||
$this->_msgToDebug(9, $this->_DumpMessage);
|
||||
$this->_msgToDebug(9, '--- END Procecc Die, Dump --- ');
|
||||
die();
|
||||
}
|
||||
foreach ($msgs as $aMsg) {
|
||||
|
@ -230,13 +247,13 @@ class aminterface {
|
|||
if (($resPos !== false) && (($resPos < $evePos) || $evePos === false)) {
|
||||
$response = $this->_msgToResponse($aMsg); // resp Ok
|
||||
$this->_incomingQueue[$this->_lastActionId] = $response;
|
||||
} else if ($evePos !== false) {
|
||||
} elseif ($evePos !== false) {
|
||||
$event = $this->_messageToEvent($aMsg); // Event Ok
|
||||
|
||||
$this->_msgToDebug(99,'--- Response Type 2 --- ');
|
||||
$this->_msgToDebug(99,$aMsg);
|
||||
$this->_msgToDebug(99,'--- Event Response Type 2 --- ');
|
||||
$this->_msgToDebug(99,$event);
|
||||
$this->_msgToDebug(99, '--- Response Type 2 --- ');
|
||||
$this->_msgToDebug(99, $aMsg);
|
||||
$this->_msgToDebug(99, '--- Event Response Type 2 --- ');
|
||||
$this->_msgToDebug(99, $event);
|
||||
|
||||
if ($event != null) {
|
||||
$response = $this->findResponse($event);
|
||||
|
@ -252,7 +269,7 @@ class aminterface {
|
|||
} else {
|
||||
// broken ami.. sending a response with events without
|
||||
// Event and ActionId
|
||||
$this->_msgToDebug(1,'resp broken ami');
|
||||
$this->_msgToDebug(1, 'resp broken ami');
|
||||
$bMsg = 'Event: ResponseEvent' . "\r\n";
|
||||
$bMsg .= 'ActionId: ' . $this->_lastActionId . "\r\n" . $aMsg;
|
||||
$event = $this->_messageToEvent($bMsg);
|
||||
|
@ -261,10 +278,10 @@ class aminterface {
|
|||
}
|
||||
}
|
||||
// print_r('<br>--- EProcecc ----------<br>');
|
||||
|
||||
}
|
||||
|
||||
private function _msgToDebug($level, $msg) {
|
||||
private function _msgToDebug($level, $msg)
|
||||
{
|
||||
if ($level > $this->debug_level) {
|
||||
return;
|
||||
}
|
||||
|
@ -273,7 +290,8 @@ class aminterface {
|
|||
print_r('<br>');
|
||||
}
|
||||
|
||||
private function _msgToResponse($msg) {
|
||||
private function _msgToResponse($msg)
|
||||
{
|
||||
// print_r("<br>------------hmsg----------<br>");
|
||||
// print_r($this->_lastActionClass);
|
||||
// print_r($this->_lastRequestedResponseHandler);
|
||||
|
@ -297,27 +315,29 @@ class aminterface {
|
|||
*
|
||||
*/
|
||||
|
||||
public function _msgFromRaw($message, $requestingaction = false, $responseHandler = false) {
|
||||
public function _msgFromRaw($message, $requestingaction = false, $responseHandler = false)
|
||||
{
|
||||
|
||||
$_className = false;
|
||||
|
||||
$responseclass = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\Generic_Response';
|
||||
if ($responseHandler != false) {
|
||||
$_className = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\' . $responseHandler . '_Response';
|
||||
} else if ($requestingaction != false) {
|
||||
} elseif ($requestingaction != false) {
|
||||
$_className = '\\FreePBX\\modules\\Sccp_manager\\' . substr(get_class($requestingaction), 20, -6) . '_Response';
|
||||
}
|
||||
if ($_className) {
|
||||
if (class_exists($_className, true)) {
|
||||
$responseclass = $_className;
|
||||
} else if ($responseHandler != false) {
|
||||
} elseif ($responseHandler != false) {
|
||||
$this->_errorException('Response Class ' . $_className . ' requested via responseHandler, could not be found');
|
||||
}
|
||||
}
|
||||
return new $responseclass($message);
|
||||
}
|
||||
|
||||
protected function _errorException($msg) {
|
||||
protected function _errorException($msg)
|
||||
{
|
||||
$this->_error[] = $msg;
|
||||
}
|
||||
|
||||
|
@ -325,7 +345,8 @@ class aminterface {
|
|||
* Replace or dublicate to AMI interface
|
||||
*/
|
||||
|
||||
public function _eventFromRaw($message) {
|
||||
public function _eventFromRaw($message)
|
||||
{
|
||||
$eventStart = strpos($message, 'Event: ') + 7;
|
||||
|
||||
if ($eventStart > strlen($message)) {
|
||||
|
@ -344,31 +365,33 @@ class aminterface {
|
|||
return new $className($message);
|
||||
}
|
||||
|
||||
public function _respnceFromRaw($message, $requestingaction = false, $responseHandler = false) {
|
||||
public function _respnceFromRaw($message, $requestingaction = false, $responseHandler = false)
|
||||
{
|
||||
|
||||
$responseclass = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\Response';
|
||||
|
||||
$_className = false;
|
||||
if ($responseHandler != false) {
|
||||
$_className = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\' . $responseHandler . '_Response';
|
||||
} else if ($requestingaction != false) {
|
||||
} elseif ($requestingaction != false) {
|
||||
$_className = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\' . substr(get_class($requestingaction), 20, -6) . '_Response';
|
||||
}
|
||||
if ($_className) {
|
||||
if (class_exists($_className, true)) {
|
||||
$responseclass = $_className;
|
||||
} else if ($responseHandler != false) {
|
||||
} elseif ($responseHandler != false) {
|
||||
throw new AMIException('Response Class ' . $_className . ' requested via responseHandler, could not be found');
|
||||
}
|
||||
}
|
||||
// if ($this->_logger->isDebugEnabled()) $this->_logger->debug('Created: ' . $responseclass . "\n");
|
||||
// if ($this->_logger->isDebugEnabled()) $this->_logger->debug('Created: ' . $responseclass . "\n");
|
||||
print_r($responseclass);
|
||||
die();
|
||||
return new $responseclass($message);
|
||||
}
|
||||
|
||||
// protected function findResponse(IncomingMessage $message) {
|
||||
protected function findResponse($message) {
|
||||
// protected function findResponse(IncomingMessage $message) {
|
||||
protected function findResponse($message)
|
||||
{
|
||||
$actionId = $message->getActionId();
|
||||
if (isset($this->_incomingQueue[$actionId])) {
|
||||
return $this->_incomingQueue[$actionId];
|
||||
|
@ -376,7 +399,8 @@ class aminterface {
|
|||
return false;
|
||||
}
|
||||
|
||||
protected function dispatch($message) {
|
||||
protected function dispatch($message)
|
||||
{
|
||||
print_r("<br>------------dispatch----------<br>");
|
||||
print_r($message);
|
||||
return false;
|
||||
|
@ -391,25 +415,26 @@ class aminterface {
|
|||
}
|
||||
if ($listener instanceof \Closure) {
|
||||
$listener($message);
|
||||
} else if (is_array($listener)) {
|
||||
} elseif (is_array($listener)) {
|
||||
$listener[0]->$listener[1]($message);
|
||||
} else {
|
||||
$listener->handle($message);
|
||||
}
|
||||
}
|
||||
print_r("<br>------------E dispatch----------<br>");
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
function core_list_all_exten($keyfld = '', $filter = array()) {
|
||||
function core_list_all_exten($keyfld = '', $filter = array())
|
||||
{
|
||||
$result = array();
|
||||
return $result;
|
||||
}
|
||||
|
||||
//-------------------Adaptive Function ------------------------------------------------------------
|
||||
|
||||
function core_list_hints() {
|
||||
function core_list_hints()
|
||||
{
|
||||
$result = array();
|
||||
if ($this->_connect_state) {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\ExtensionStateListAction();
|
||||
|
@ -424,7 +449,8 @@ class aminterface {
|
|||
return $result;
|
||||
}
|
||||
|
||||
function core_list_all_hints() {
|
||||
function core_list_all_hints()
|
||||
{
|
||||
$result = array();
|
||||
if ($this->_connect_state) {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\ExtensionStateListAction();
|
||||
|
@ -439,7 +465,8 @@ class aminterface {
|
|||
return $result;
|
||||
}
|
||||
// --------------------- SCCP Comands
|
||||
function sccp_list_keysets() {
|
||||
function sccp_list_keysets()
|
||||
{
|
||||
$result = array();
|
||||
if ($this->_connect_state) {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowSoftkeySetsAction();
|
||||
|
@ -451,7 +478,8 @@ class aminterface {
|
|||
}
|
||||
return $result;
|
||||
}
|
||||
function sccp_get_active_device() {
|
||||
function sccp_get_active_device()
|
||||
{
|
||||
$result = array();
|
||||
if ($this->_connect_state) {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowDevicesAction();
|
||||
|
@ -463,7 +491,8 @@ class aminterface {
|
|||
}
|
||||
return $result;
|
||||
}
|
||||
function sccp_getdevice_info($devicename) {
|
||||
function sccp_getdevice_info($devicename)
|
||||
{
|
||||
$result = array();
|
||||
if ($this->_connect_state) {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowDeviceAction($devicename);
|
||||
|
@ -473,12 +502,13 @@ class aminterface {
|
|||
}
|
||||
return $result;
|
||||
}
|
||||
function sccp_device_reset($devicename,$action = '') {
|
||||
function sccp_device_reset($devicename, $action = '')
|
||||
{
|
||||
if ($this->_connect_state) {
|
||||
if ($action == 'tokenack') {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPTokenAckAction($devicename);
|
||||
} else {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPDeviceRestartAction($devicename,$action);
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPDeviceRestartAction($devicename, $action);
|
||||
}
|
||||
$_response = $this->send($_action);
|
||||
$result['data'] = 'Device :'.$devicename.' Result: '.$_response->getMessage();
|
||||
|
@ -489,7 +519,8 @@ class aminterface {
|
|||
}
|
||||
|
||||
//------------------- Core Comands ----
|
||||
function core_sccp_reload() {
|
||||
function core_sccp_reload()
|
||||
{
|
||||
$result = array();
|
||||
if ($this->_connect_state) {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\ReloadAction('chan_sccp');
|
||||
|
@ -499,7 +530,8 @@ class aminterface {
|
|||
}
|
||||
return $result;
|
||||
}
|
||||
function getSCCPVersion() {
|
||||
function getSCCPVersion()
|
||||
{
|
||||
$result = array();
|
||||
if ($this->_connect_state) {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPConfigMetaDataAction();
|
||||
|
@ -509,7 +541,8 @@ class aminterface {
|
|||
return $result;
|
||||
}
|
||||
|
||||
function getRealTimeStatus() {
|
||||
function getRealTimeStatus()
|
||||
{
|
||||
$result = array();
|
||||
if ($this->_connect_state) {
|
||||
$_action = new \FreePBX\modules\Sccp_manager\aminterface\CommandAction('realtime mysql status');
|
||||
|
@ -523,5 +556,4 @@ class aminterface {
|
|||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,18 +10,21 @@
|
|||
|
||||
namespace FreePBX\modules\Sccp_manager;
|
||||
|
||||
class oldinterface {
|
||||
class oldinterface
|
||||
{
|
||||
|
||||
var $error;
|
||||
|
||||
public function __construct($parent_class = null) {
|
||||
public function __construct($parent_class = null)
|
||||
{
|
||||
$this->paren_class = $parent_class;
|
||||
$this->error = "";
|
||||
}
|
||||
|
||||
public function info() {
|
||||
public function info()
|
||||
{
|
||||
$Ver = '13.0.4';
|
||||
return Array('Version' => $Ver,
|
||||
return array('Version' => $Ver,
|
||||
'about' => 'Old interface data ver: ' . $Ver);
|
||||
}
|
||||
|
||||
|
@ -34,7 +37,8 @@ class oldinterface {
|
|||
* Replace or dublicate to AMI interface
|
||||
*/
|
||||
|
||||
public function sccp_core_commands($params = array()) {
|
||||
public function sccp_core_commands($params = array())
|
||||
{
|
||||
global $astman;
|
||||
$cmd_list = array('get_softkey' => array('cmd' => "sccp show softkeyssets", 'param' => ''),
|
||||
'get_version' => array('cmd' => "sccp show version", 'param' => ''),
|
||||
|
@ -77,7 +81,6 @@ class oldinterface {
|
|||
if (!empty($params['name'])) {
|
||||
$astman->Command('sccp device ' . $params['name'] . ' ' . $msg);
|
||||
} else {
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -89,7 +92,8 @@ class oldinterface {
|
|||
return $result;
|
||||
}
|
||||
|
||||
public function sccp_getdevice_info($dev_id) {
|
||||
public function sccp_getdevice_info($dev_id)
|
||||
{
|
||||
if (empty($dev_id)) {
|
||||
return array();
|
||||
}
|
||||
|
@ -113,9 +117,9 @@ class oldinterface {
|
|||
} else {
|
||||
$res2 = '';
|
||||
}
|
||||
$res3['SCCP_Vendor'] = Array('vendor' => strtok($res1, ' '), 'model' => strtok('('), 'model_id' => strtok(')'), 'vendor_addon' => strtok($res2, ' '), 'model_addon' => strtok(' '));
|
||||
$res3['SCCP_Vendor'] = array('vendor' => strtok($res1, ' '), 'model' => strtok('('), 'model_id' => strtok(')'), 'vendor_addon' => strtok($res2, ' '), 'model_addon' => strtok(' '));
|
||||
if (empty($res3['SCCP_Vendor']['vendor']) || $res3['SCCP_Vendor']['vendor'] == 'Undefined') {
|
||||
$res3['SCCP_Vendor'] = Array('vendor' => 'Undefined', 'model' => $res4, 'model_id' => '', 'vendor_addon' => $res3['SCCP_Vendor']['vendor_addon'], 'model_addon' => $res3['SCCP_Vendor']['model_addon']);
|
||||
$res3['SCCP_Vendor'] = array('vendor' => 'Undefined', 'model' => $res4, 'model_id' => '', 'vendor_addon' => $res3['SCCP_Vendor']['vendor_addon'], 'model_addon' => $res3['SCCP_Vendor']['model_addon']);
|
||||
// return $res4;
|
||||
// return array();
|
||||
}
|
||||
|
@ -130,7 +134,8 @@ class oldinterface {
|
|||
* A function should be used in the form of buttons for getting all hint. Not working. I don't know how to use properly.
|
||||
*/
|
||||
|
||||
public function sccp_list_hints() {
|
||||
public function sccp_list_hints()
|
||||
{
|
||||
$hint_key = array();
|
||||
$hint_all = $this->sccp_list_all_hints();
|
||||
foreach ($hint_all as $value) {
|
||||
|
@ -143,7 +148,8 @@ class oldinterface {
|
|||
return $hint_key;
|
||||
}
|
||||
|
||||
public function sccp_list_all_hints() {
|
||||
public function sccp_list_all_hints()
|
||||
{
|
||||
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_hints'));
|
||||
$ast_out = preg_split("/[\n]/", $ast_out['data']);
|
||||
$ast_key = array();
|
||||
|
@ -171,7 +177,8 @@ class oldinterface {
|
|||
return $ast_key;
|
||||
}
|
||||
|
||||
public function sccp_realtime_status() {
|
||||
public function sccp_realtime_status()
|
||||
{
|
||||
$ast_res = array();
|
||||
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_realtime_status'));
|
||||
$ast_out = preg_split("/[\n]/", $ast_out['data']);
|
||||
|
@ -190,7 +197,8 @@ class oldinterface {
|
|||
// !TODO!: -TODO-: install.php is still using the other version number. This is actually where I use another method ?
|
||||
|
||||
|
||||
public function get_compatible_sccp() {
|
||||
public function get_compatible_sccp()
|
||||
{
|
||||
$res = $this->getSCCPVersion();
|
||||
if (empty($res)) {
|
||||
return 0;
|
||||
|
@ -220,7 +228,8 @@ class oldinterface {
|
|||
// return $res["vCode"];
|
||||
}
|
||||
|
||||
public function getSCCPVersion() {
|
||||
public function getSCCPVersion()
|
||||
{
|
||||
$res = $this->getChanSCCPVersion();
|
||||
if (empty($res)) {
|
||||
$res = $this->getCoreSCCPVersion();
|
||||
|
@ -228,7 +237,8 @@ class oldinterface {
|
|||
return $res;
|
||||
}
|
||||
|
||||
function getCoreSCCPVersion() {
|
||||
function getCoreSCCPVersion()
|
||||
{
|
||||
$result = array();
|
||||
$ast_out = $this->sccp_version();
|
||||
$result["Version"] = $ast_out[0];
|
||||
|
@ -252,9 +262,10 @@ class oldinterface {
|
|||
return $result;
|
||||
}
|
||||
|
||||
private function sccp_version() {
|
||||
private function sccp_version()
|
||||
{
|
||||
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_version'));
|
||||
if ( ($ast_out['Response'] == 'Error') || (strpos($ast_out['data'], 'No such command') != false) ) {
|
||||
if (($ast_out['Response'] == 'Error') || (strpos($ast_out['data'], 'No such command') != false)) {
|
||||
return array('-1');
|
||||
}
|
||||
if (preg_match("/Release.*\(/", $ast_out['data'], $matches)) {
|
||||
|
@ -265,7 +276,8 @@ class oldinterface {
|
|||
}
|
||||
}
|
||||
|
||||
function getChanSCCPVersion() {
|
||||
function getChanSCCPVersion()
|
||||
{
|
||||
global $astman;
|
||||
$result = array();
|
||||
if (!$astman) {
|
||||
|
@ -285,11 +297,9 @@ class oldinterface {
|
|||
$result["vCode"] = 400;
|
||||
if ($version_parts[1] == "1") {
|
||||
$result["vCode"] = 410;
|
||||
} else
|
||||
if ($version_parts[1] == "2") {
|
||||
} elseif ($version_parts[1] == "2") {
|
||||
$result["vCode"] = 420;
|
||||
} else
|
||||
if ($version_parts[1] >= "3") {
|
||||
} elseif ($version_parts[1] >= "3") {
|
||||
$result["vCode"] = 430;
|
||||
}
|
||||
}
|
||||
|
@ -338,7 +348,8 @@ class oldinterface {
|
|||
return $result;
|
||||
}
|
||||
|
||||
public function sccp_list_keysets() {
|
||||
public function sccp_list_keysets()
|
||||
{
|
||||
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_softkey'));
|
||||
|
||||
$ast_out = preg_split("/[\n]/", $ast_out['data']);
|
||||
|
@ -364,7 +375,8 @@ class oldinterface {
|
|||
return $ast_key;
|
||||
}
|
||||
|
||||
public function sccp_get_active_device() {
|
||||
public function sccp_get_active_device()
|
||||
{
|
||||
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_device'));
|
||||
|
||||
$ast_out = preg_split("/[\n]/", $ast_out['data']);
|
||||
|
@ -397,7 +409,7 @@ class oldinterface {
|
|||
// list ($descr, $address, $devname, $status, $junk) = $line_arr;
|
||||
// if (strlen($ast_key[$devname]) < 1) {
|
||||
if (strlen($devname) > 1) {
|
||||
$ast_key[$devname] = Array('name' => $devname, 'status' => $status, 'address' => $address, 'descr' => $descr, 'token' => $token);
|
||||
$ast_key[$devname] = array('name' => $devname, 'status' => $status, 'address' => $address, 'descr' => $descr, 'token' => $token);
|
||||
}
|
||||
/*
|
||||
if (isset($ast_key[$devname])) {
|
||||
|
@ -418,7 +430,8 @@ class oldinterface {
|
|||
* Replace sccp_core_commands($params = array()) {
|
||||
*/
|
||||
|
||||
private function astman_retrieveJSFromMetaData($segment = "") {
|
||||
private function astman_retrieveJSFromMetaData($segment = "")
|
||||
{
|
||||
global $astman;
|
||||
$params = array();
|
||||
if ($segment != "") {
|
||||
|
@ -434,7 +447,8 @@ class oldinterface {
|
|||
}
|
||||
}
|
||||
|
||||
private function strpos_array($haystack, $needles) {
|
||||
private function strpos_array($haystack, $needles)
|
||||
{
|
||||
if (is_array($needles)) {
|
||||
foreach ($needles as $str) {
|
||||
if (is_array($str)) {
|
||||
|
@ -442,22 +456,25 @@ class oldinterface {
|
|||
} else {
|
||||
$pos = strpos($haystack, $str);
|
||||
}
|
||||
if ($pos !== FALSE) {
|
||||
if ($pos !== false) {
|
||||
return $pos;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return strpos($haystack, $needles);
|
||||
}
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
private function loc_after($value, $inthat) {
|
||||
if (!is_bool(strpos($inthat, $value)))
|
||||
private function loc_after($value, $inthat)
|
||||
{
|
||||
if (!is_bool(strpos($inthat, $value))) {
|
||||
return substr($inthat, strpos($inthat, $value) + strlen($value));
|
||||
}
|
||||
}
|
||||
|
||||
function getеtestChanSCC() {
|
||||
function getеtestChanSCC()
|
||||
{
|
||||
global $astman;
|
||||
// $action = Array('SCCPShowGlobals',);
|
||||
$params = array();
|
||||
|
@ -472,7 +489,8 @@ class oldinterface {
|
|||
/*
|
||||
* [Segments] => ( [0] => general [1] => device [2] => line [3] => softkey )
|
||||
*/
|
||||
function getеtestChanSCCP_GlablsInfo($Segment = '') {
|
||||
function getеtestChanSCCP_GlablsInfo($Segment = '')
|
||||
{
|
||||
global $astman;
|
||||
$params = array();
|
||||
|
||||
|
@ -498,5 +516,4 @@ class oldinterface {
|
|||
}
|
||||
return $metadata;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,27 +9,31 @@
|
|||
|
||||
namespace FreePBX\modules\Sccp_manager;
|
||||
|
||||
class dbinterface {
|
||||
class dbinterface
|
||||
{
|
||||
|
||||
private $val_null = 'NONE'; /// REPLACE to null Field
|
||||
|
||||
public function __construct($parent_class = null) {
|
||||
$this->paren_class = $parent_class;
|
||||
public function __construct($parent_class = null)
|
||||
{
|
||||
$this->paren_class = $parent_class;
|
||||
}
|
||||
|
||||
public function info() {
|
||||
public function info()
|
||||
{
|
||||
$Ver = '13.0.2';
|
||||
return Array('Version' => $Ver,
|
||||
return array('Version' => $Ver,
|
||||
'about' => 'Data access interface ver: ' . $Ver);
|
||||
}
|
||||
|
||||
/*
|
||||
* Core Access Function
|
||||
*/
|
||||
public function get_db_SccpTableByID($dataid, $data = array(), $indexField = '') {
|
||||
public function get_db_SccpTableByID($dataid, $data = array(), $indexField = '')
|
||||
{
|
||||
$resut = array();
|
||||
$raw = $this->get_db_SccpTableData($dataid, $data);
|
||||
if ( empty($raw) || empty($indexField)) {
|
||||
if (empty($raw) || empty($indexField)) {
|
||||
return $raw;
|
||||
}
|
||||
foreach ($raw as $value) {
|
||||
|
@ -39,9 +43,10 @@ class dbinterface {
|
|||
return $resut;
|
||||
}
|
||||
|
||||
public function get_db_SccpTableData($dataid, $data = array()) {
|
||||
public function get_db_SccpTableData($dataid, $data = array())
|
||||
{
|
||||
if ($dataid == '') {
|
||||
return False;
|
||||
return false;
|
||||
}
|
||||
switch ($dataid) {
|
||||
case "SccpExtension":
|
||||
|
@ -49,7 +54,8 @@ class dbinterface {
|
|||
$sql = "SELECT * FROM `sccpline` ORDER BY `name`";
|
||||
$raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC);
|
||||
} else {
|
||||
$sql = "SELECT * FROM `sccpline` WHERE `name`='" . $data['name']. "'";;
|
||||
$sql = "SELECT * FROM `sccpline` WHERE `name`='" . $data['name']. "'";
|
||||
;
|
||||
$raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC);
|
||||
}
|
||||
break;
|
||||
|
@ -72,7 +78,8 @@ class dbinterface {
|
|||
}
|
||||
}
|
||||
if (!empty($data['name'])) {
|
||||
$filtred = "`name`='" . $data['name']. "'";;
|
||||
$filtred = "`name`='" . $data['name']. "'";
|
||||
;
|
||||
$singlrow = true;
|
||||
}
|
||||
if (!empty($data['type'])) {
|
||||
|
@ -141,7 +148,7 @@ class dbinterface {
|
|||
$sql = 'SELECT * FROM sccpbuttonconfig WHERE ' .$sql. 'ORDER BY `instance`;';
|
||||
$raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC);
|
||||
} else {
|
||||
$raw_settings = Array();
|
||||
$raw_settings = array();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -149,13 +156,15 @@ class dbinterface {
|
|||
return $raw_settings;
|
||||
}
|
||||
|
||||
public function get_db_SccpSetting() {
|
||||
public function get_db_SccpSetting()
|
||||
{
|
||||
$sql = "SELECT `keyword`, `data`, `type`, `seq` FROM `sccpsettings` ORDER BY `type`, `seq`";
|
||||
$raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC);
|
||||
return $raw_settings;
|
||||
}
|
||||
|
||||
public function get_db_sysvalues() {
|
||||
public function get_db_sysvalues()
|
||||
{
|
||||
$sql = "SHOW VARIABLES LIKE '%group_concat%'";
|
||||
$raw_settings = sql($sql, "getRow", DB_FETCHMODE_ASSOC);
|
||||
return $raw_settings;
|
||||
|
@ -165,7 +174,8 @@ class dbinterface {
|
|||
* Get Sccp Device Model information
|
||||
*/
|
||||
|
||||
function getDb_model_info($get = "all", $format_list = "all", $filter = array()) {
|
||||
function getDb_model_info($get = "all", $format_list = "all", $filter = array())
|
||||
{
|
||||
global $db;
|
||||
switch ($format_list) {
|
||||
case "model":
|
||||
|
@ -230,7 +240,8 @@ class dbinterface {
|
|||
return $raw_settings;
|
||||
}
|
||||
|
||||
function sccp_save_db($db_name = "", $save_value = array(), $mode = 'update', $key_fld = "", $hwid = "") {
|
||||
function sccp_save_db($db_name = "", $save_value = array(), $mode = 'update', $key_fld = "", $hwid = "")
|
||||
{
|
||||
// mode clear - Empty tabele before update
|
||||
// mode update - update / replace record
|
||||
global $db;
|
||||
|
@ -317,40 +328,42 @@ class dbinterface {
|
|||
* My be Replace by SccpTables ??!
|
||||
*
|
||||
*/
|
||||
public function dump_sccp_tables($data_path, $database, $user, $pass ) {
|
||||
public function dump_sccp_tables($data_path, $database, $user, $pass)
|
||||
{
|
||||
$filename = $data_path.'/sccp_backup_'.date('G_a_m_d_y').'.sql';
|
||||
$result = exec('mysqldump '.$database.' --password='.$pass.' --user='.$user.' --single-transaction >'.$filename ,$output);
|
||||
$result = exec('mysqldump '.$database.' --password='.$pass.' --user='.$user.' --single-transaction >'.$filename, $output);
|
||||
return $filename;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check Table structure
|
||||
*/
|
||||
public function validate() {
|
||||
public function validate()
|
||||
{
|
||||
global $db;
|
||||
$check_fields = array('430' => array('_hwlang' => "varchar(12)"), '431' => array('private'=> "enum('on','off')"), '433' => array('directed_pickup'=>'') );
|
||||
$sql = "DESCRIBE `sccpdevice`;";
|
||||
$raw_result = sql($sql, "getAll", DB_FETCHMODE_ASSOC);
|
||||
$result = 0;
|
||||
foreach ($raw_result as $value) {
|
||||
$id_result[$value['Field']] = $value['Type'];
|
||||
$id_result[$value['Field']] = $value['Type'];
|
||||
}
|
||||
foreach ($check_fields as $key => $value) {
|
||||
$sub_result = true;
|
||||
foreach($value as $skey => $svalue) {
|
||||
if (!empty($svalue) ) {
|
||||
if (empty($id_result[$skey])) {
|
||||
$sub_result = false;
|
||||
foreach ($value as $skey => $svalue) {
|
||||
if (!empty($svalue)) {
|
||||
if (empty($id_result[$skey])) {
|
||||
$sub_result = false;
|
||||
} else {
|
||||
if (strtolower($id_result[$skey]) != strtolower($svalue)) {
|
||||
$sub_result = false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (strtolower($id_result[$skey]) != strtolower($svalue)) {
|
||||
if (!empty($id_result[$skey])) {
|
||||
$sub_result = false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!empty($id_result[$skey])) {
|
||||
$sub_result = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($sub_result) {
|
||||
$result = $key;
|
||||
|
@ -361,5 +374,4 @@ class dbinterface {
|
|||
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,19 +6,23 @@
|
|||
|
||||
namespace FreePBX\modules\Sccp_manager;
|
||||
|
||||
class extconfigs {
|
||||
class extconfigs
|
||||
{
|
||||
|
||||
public function __construct($parent_class = null) {
|
||||
public function __construct($parent_class = null)
|
||||
{
|
||||
$this->paren_class = $parent_class;
|
||||
}
|
||||
|
||||
public function info() {
|
||||
public function info()
|
||||
{
|
||||
$Ver = '13.0.3';
|
||||
return Array('Version' => $Ver,
|
||||
return array('Version' => $Ver,
|
||||
'about' => 'Default Setings and Enums ver: ' . $Ver);
|
||||
}
|
||||
|
||||
public function getextConfig($id = '', $index = '') {
|
||||
public function getextConfig($id = '', $index = '')
|
||||
{
|
||||
switch ($id) {
|
||||
case 'keyset':
|
||||
$result = $this->keysetdefault;
|
||||
|
@ -56,7 +60,7 @@ class extconfigs {
|
|||
|
||||
$tz_tmp = array();
|
||||
foreach ($timezone_abbreviations as $subArray) {
|
||||
$tf_idt = array_search($index ,array_column($subArray, 'timezone_id'));
|
||||
$tf_idt = array_search($index, array_column($subArray, 'timezone_id'));
|
||||
if (!empty($tf_idt)) {
|
||||
$tz_tmp[] = $subArray[$tf_idt];
|
||||
}
|
||||
|
@ -103,9 +107,10 @@ class extconfigs {
|
|||
}
|
||||
}
|
||||
|
||||
private function get_cisco_time_zone($tzc){
|
||||
private function get_cisco_time_zone($tzc)
|
||||
{
|
||||
|
||||
if ( (empty($tzc)) or (!array_key_exists($tzc, $this->cisco_timezone))) {
|
||||
if ((empty($tzc)) or (!array_key_exists($tzc, $this->cisco_timezone))) {
|
||||
// return array('offset' => '00', 'daylight' => '', 'cisco_code' => 'Greenwich');
|
||||
return array();
|
||||
}
|
||||
|
@ -259,35 +264,36 @@ class extconfigs {
|
|||
'New Zealand' => array('offset' => '720', 'daylight' => 'Daylight')
|
||||
);
|
||||
|
||||
public function validate_init_path($confDir = '', $db_vars, $sccp_driver_replace = '') {
|
||||
public function validate_init_path($confDir = '', $db_vars, $sccp_driver_replace = '')
|
||||
{
|
||||
// global $db;
|
||||
// global $amp_conf;
|
||||
// *** Setings for Provision Sccp
|
||||
$adv_config = Array('tftproot' => '', 'firmware' => 'firmware', 'settings' => 'settings',
|
||||
$adv_config = array('tftproot' => '', 'firmware' => 'firmware', 'settings' => 'settings',
|
||||
'locales' => 'locales', 'languages' => 'languages', 'templates' => 'templates', 'dialplan' => 'dialplan', 'softkey' => 'softkey');
|
||||
// 'pro' /tftpboot - root dir
|
||||
// /tftpboot/locales/locales/%Languge_name%
|
||||
// /tftpboot/settings/XMLdefault.cnf.xml
|
||||
// /tftpboot/settings/SEP[MAC].cnf.xml
|
||||
// /tftpboot/firmware/79xx/SCCPxxxx.loads
|
||||
$adv_tree['pro'] = Array('templates' => 'tftproot', 'settings' => 'tftproot', 'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => 'locales', 'dialplan' => 'tftproot', 'softkey' => 'tftproot');
|
||||
$adv_tree['pro'] = array('templates' => 'tftproot', 'settings' => 'tftproot', 'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => 'locales', 'dialplan' => 'tftproot', 'softkey' => 'tftproot');
|
||||
|
||||
// 'def' /tftpboot - root dir
|
||||
// /tftpboot/languages/%Languge_name%
|
||||
// /tftpboot/XMLdefault.cnf.xml
|
||||
// /tftpboot/SEP[MAC].cnf.xml
|
||||
// /tftpboot/SCCPxxxx.loads
|
||||
$adv_tree['def'] = Array('templates' => 'tftproot', 'settings' => '', 'locales' => '', 'firmware' => '', 'languages' => 'tftproot', 'dialplan' => '', 'softkey' => '');
|
||||
$adv_tree['def'] = array('templates' => 'tftproot', 'settings' => '', 'locales' => '', 'firmware' => '', 'languages' => 'tftproot', 'dialplan' => '', 'softkey' => '');
|
||||
// $adv_tree['def'] = Array('templates' => 'tftproot', 'settings' => '', 'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => '');
|
||||
// $adv_tree['def'] = Array('templates' => 'tftproot', 'settings' => '', 'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => 'tftproot');
|
||||
//* **************------ ****
|
||||
$base_tree = Array('tftp_templates' => 'templates', 'tftp_path_store' => 'settings', 'tftp_lang_path' => 'languages', 'tftp_firmware_path' => 'firmware', 'tftp_dialplan' => 'dialplan', 'tftp_softkey' => 'softkey');
|
||||
$base_tree = array('tftp_templates' => 'templates', 'tftp_path_store' => 'settings', 'tftp_lang_path' => 'languages', 'tftp_firmware_path' => 'firmware', 'tftp_dialplan' => 'dialplan', 'tftp_softkey' => 'softkey');
|
||||
|
||||
if (empty($confDir)) {
|
||||
return array('error' => 'empty СonfDir');
|
||||
}
|
||||
|
||||
$base_config = Array('asterisk' => $confDir, 'sccp_conf' => $confDir . '/sccp.conf', 'tftp_path' => '');
|
||||
$base_config = array('asterisk' => $confDir, 'sccp_conf' => $confDir . '/sccp.conf', 'tftp_path' => '');
|
||||
|
||||
// Test Base dir (/tftproot)
|
||||
if (!empty($db_vars["tftp_path"])) {
|
||||
|
@ -408,9 +414,10 @@ class extconfigs {
|
|||
return $base_config;
|
||||
}
|
||||
|
||||
public function validate_RealTime($realm = '') {
|
||||
public function validate_RealTime($realm = '')
|
||||
{
|
||||
global $amp_conf;
|
||||
$res = Array();
|
||||
$res = array();
|
||||
if (empty($realm)) {
|
||||
$realm = 'sccp';
|
||||
}
|
||||
|
@ -504,5 +511,4 @@ class extconfigs {
|
|||
}
|
||||
return $res;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,26 +6,30 @@
|
|||
|
||||
namespace FreePBX\modules\Sccp_manager;
|
||||
|
||||
class sipconfigs {
|
||||
class sipconfigs
|
||||
{
|
||||
// protected $database;
|
||||
// protected $freepbx;
|
||||
|
||||
public function __construct($parent_class = null) {
|
||||
public function __construct($parent_class = null)
|
||||
{
|
||||
$this->paren_class = $parent_class;
|
||||
// $freepbx
|
||||
// $this->database = $freepbx->Database;
|
||||
}
|
||||
|
||||
public function info() {
|
||||
public function info()
|
||||
{
|
||||
$Ver = '13.0.4';
|
||||
return Array('Version' => $Ver,
|
||||
return array('Version' => $Ver,
|
||||
'about' => 'Sip Setings ver: ' . $Ver);
|
||||
}
|
||||
|
||||
public function get_db_sip_TableData($dataid, $data = array()) {
|
||||
public function get_db_sip_TableData($dataid, $data = array())
|
||||
{
|
||||
global $db;
|
||||
if ($dataid == '') {
|
||||
return False;
|
||||
return false;
|
||||
}
|
||||
switch ($dataid) {
|
||||
case "Device":
|
||||
|
@ -40,7 +44,6 @@ class sipconfigs {
|
|||
$tech[$value['id']][$value['keyword']]=$value['data'];
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
|
||||
}
|
||||
return $tech;
|
||||
case "DeviceById":
|
||||
|
@ -55,14 +58,13 @@ class sipconfigs {
|
|||
$value = $value[0];
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
|
||||
}
|
||||
return $tech;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function getSipConfig() {
|
||||
public function getSipConfig()
|
||||
{
|
||||
$result = array();
|
||||
// $def_sip_proto = 'sip';
|
||||
// $def_proto = 'tcp';
|
||||
|
@ -81,10 +83,10 @@ class sipconfigs {
|
|||
*/
|
||||
$tmp_binds = is_array($tmp_binds) ? $tmp_binds: array();
|
||||
$result = array();
|
||||
foreach($tmp_binds as $f_protocol => $f_bind) {
|
||||
foreach($f_bind as $f_ip => $f_port) {
|
||||
foreach ($tmp_binds as $f_protocol => $f_bind) {
|
||||
foreach ($f_bind as $f_ip => $f_port) {
|
||||
if (($f_ip == '0.0.0.0') || ($f_ip == '[::]')) {
|
||||
foreach($if_list as $f_if => $f_data) {
|
||||
foreach ($if_list as $f_if => $f_data) {
|
||||
if ($f_data['ip'] == "127.0.0.1") {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -10,13 +10,15 @@
|
|||
|
||||
namespace FreePBX\modules\Sccp_manager;
|
||||
|
||||
class srvinterface {
|
||||
class srvinterface
|
||||
{
|
||||
|
||||
var $error;
|
||||
var $_info;
|
||||
var $ami_mode;
|
||||
|
||||
public function __construct($parent_class = null) {
|
||||
public function __construct($parent_class = null)
|
||||
{
|
||||
$this->paren_class = $parent_class;
|
||||
if ($this->paren_class == null) {
|
||||
$this->paren_class = $this;
|
||||
|
@ -49,17 +51,19 @@ class srvinterface {
|
|||
$this->ami_mode = $this->aminterface->status();
|
||||
}
|
||||
|
||||
public function info() {
|
||||
public function info()
|
||||
{
|
||||
$Ver = '14.0.1';
|
||||
$info = '';
|
||||
foreach ($this->_info as $key => $value) {
|
||||
$info .= $value['about'] . "\n ";
|
||||
}
|
||||
return Array('Version' => $Ver,
|
||||
return array('Version' => $Ver,
|
||||
'about' => 'Server interface data ver: ' . $Ver . "\n " . $info);
|
||||
}
|
||||
|
||||
public function sccp_device_reset($id = '') {
|
||||
public function sccp_device_reset($id = '')
|
||||
{
|
||||
if ($this->ami_mode) {
|
||||
return $this->aminterface->sccp_device_reset($id, 'reset');
|
||||
} else {
|
||||
|
@ -67,7 +71,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_device_restart($id = '') {
|
||||
public function sccp_device_restart($id = '')
|
||||
{
|
||||
if ($this->ami_mode) {
|
||||
return $this->aminterface->sccp_device_reset($id, 'restart');
|
||||
} else {
|
||||
|
@ -75,7 +80,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_device_reload($id = '') {
|
||||
public function sccp_device_reload($id = '')
|
||||
{
|
||||
if ($this->ami_mode) {
|
||||
return $this->aminterface->sccp_device_reset($id, 'full');
|
||||
} else {
|
||||
|
@ -83,7 +89,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_reset_token($id = '') {
|
||||
public function sccp_reset_token($id = '')
|
||||
{
|
||||
if ($this->ami_mode) {
|
||||
return $this->aminterface->sccp_device_reset($id, 'tokenack');
|
||||
} else {
|
||||
|
@ -91,7 +98,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_reload() {
|
||||
public function sccp_reload()
|
||||
{
|
||||
if ($this->ami_mode) {
|
||||
return $this->aminterface->core_sccp_reload();
|
||||
// return $this->oldinterface->sccp_core_commands(array('cmd' => 'sccp_reload')); // !!!!!!!!!!!!!!!!!!!!!!!!!--------------------------- Remove
|
||||
|
@ -100,7 +108,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_line_reload($id = '') {
|
||||
public function sccp_line_reload($id = '')
|
||||
{
|
||||
if ($this->ami_mode) {
|
||||
return $this->oldinterface->sccp_core_commands(array('cmd' => 'reload_line', 'name' => $id));
|
||||
} else {
|
||||
|
@ -108,7 +117,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
private function sccp_core_commands($params = array()) {
|
||||
private function sccp_core_commands($params = array())
|
||||
{
|
||||
|
||||
if ($this->ami_mode) {
|
||||
if (!empty($params['cmd'])) {
|
||||
|
@ -154,7 +164,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_getdevice_info($dev_id) {
|
||||
public function sccp_getdevice_info($dev_id)
|
||||
{
|
||||
if (empty($dev_id)) {
|
||||
return array();
|
||||
}
|
||||
|
@ -165,7 +176,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_list_hints() {
|
||||
public function sccp_list_hints()
|
||||
{
|
||||
if ($this->ami_mode) {
|
||||
return $this->aminterface->core_list_hints();
|
||||
} else {
|
||||
|
@ -173,7 +185,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_list_all_hints() {
|
||||
public function sccp_list_all_hints()
|
||||
{
|
||||
|
||||
if ($this->ami_mode) {
|
||||
return $this->aminterface->core_list_all_hints();
|
||||
|
@ -182,7 +195,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_realtime_status() {
|
||||
public function sccp_realtime_status()
|
||||
{
|
||||
if (!$this->ami_mode) {
|
||||
return $this->oldinterface->sccp_realtime_status();
|
||||
} else {
|
||||
|
@ -199,7 +213,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function get_compatible_sccp() {
|
||||
public function get_compatible_sccp()
|
||||
{
|
||||
|
||||
$res = $this->getSCCPVersion();
|
||||
if (empty($res)) {
|
||||
|
@ -230,7 +245,8 @@ class srvinterface {
|
|||
// return $res["vCode"];
|
||||
}
|
||||
|
||||
public function getSCCPVersion() {
|
||||
public function getSCCPVersion()
|
||||
{
|
||||
$res = $this->getChanSCCPVersion();
|
||||
if (empty($res)) {
|
||||
$res = $this->oldinterface->getCoreSCCPVersion();
|
||||
|
@ -238,7 +254,8 @@ class srvinterface {
|
|||
return $res;
|
||||
}
|
||||
|
||||
public function sccp_list_keysets() {
|
||||
public function sccp_list_keysets()
|
||||
{
|
||||
|
||||
if ($this->ami_mode) {
|
||||
return $this->aminterface->sccp_list_keysets();
|
||||
|
@ -247,7 +264,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
public function sccp_get_active_device() {
|
||||
public function sccp_get_active_device()
|
||||
{
|
||||
if ($this->ami_mode) {
|
||||
return $this->aminterface->sccp_get_active_device();
|
||||
} else {
|
||||
|
@ -255,7 +273,8 @@ class srvinterface {
|
|||
}
|
||||
}
|
||||
|
||||
function getChanSCCPVersion() {
|
||||
function getChanSCCPVersion()
|
||||
{
|
||||
if (!$this->ami_mode) {
|
||||
return $this->oldinterface->getChanSCCPVersion();
|
||||
} else {
|
||||
|
@ -274,7 +293,7 @@ class srvinterface {
|
|||
case "2":
|
||||
$result["vCode"] = 420;
|
||||
break;
|
||||
case 3. . .5 :
|
||||
case 3. . .5:
|
||||
$result["vCode"] = 430;
|
||||
break;
|
||||
default:
|
||||
|
@ -318,7 +337,8 @@ class srvinterface {
|
|||
}
|
||||
|
||||
// ---------------------------- Debug Data -------------------------------------------
|
||||
function t_get_ami_data() {
|
||||
function t_get_ami_data()
|
||||
{
|
||||
global $amp_conf;
|
||||
$fp = fsockopen("127.0.0.1", "5038", $errno, $errstr, 10);
|
||||
if (!$fp) {
|
||||
|
@ -336,8 +356,8 @@ class srvinterface {
|
|||
// fputs($fp,"DeviceName: SEP00070E36555C\r\n");
|
||||
|
||||
// fputs ($fp,"Action: DeviceStateList\r\n");
|
||||
fputs ($fp,"Action: SCCPShowDevices\r\n");
|
||||
fputs($fp,"Segment: general\r\n");
|
||||
fputs($fp, "Action: SCCPShowDevices\r\n");
|
||||
fputs($fp, "Segment: general\r\n");
|
||||
|
||||
// fputs ($fp,"Action: SCCPShowDevice\r\n");
|
||||
// fputs ($fp,"DeviceName: SEP00070E36555C\r\n");
|
||||
|
@ -391,5 +411,4 @@ class srvinterface {
|
|||
fclose($fp);
|
||||
return $resp;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,21 +13,25 @@
|
|||
|
||||
namespace FreePBX\modules\Sccp_manager;
|
||||
|
||||
class xmlinterface {
|
||||
class xmlinterface
|
||||
{
|
||||
|
||||
private $val_null = 'NONE'; /// REPLACE to null Field
|
||||
|
||||
public function __construct($parent_class = null) {
|
||||
public function __construct($parent_class = null)
|
||||
{
|
||||
$this->paren_class = $parent_class;
|
||||
}
|
||||
|
||||
public function info() {
|
||||
public function info()
|
||||
{
|
||||
$Ver = '13.0.4';
|
||||
return Array('Version' => $Ver,
|
||||
return array('Version' => $Ver,
|
||||
'about' => 'Create XML data interface ver: ' . $Ver);
|
||||
}
|
||||
|
||||
function create_default_XML($store_path = '', $data_values = array(), $model_information = array(), $lang_info = array()) {
|
||||
function create_default_XML($store_path = '', $data_values = array(), $model_information = array(), $lang_info = array())
|
||||
{
|
||||
$data_path = $data_values['tftp_path'];
|
||||
if (empty($store_path) || empty($data_path) || empty($data_values)) {
|
||||
return;
|
||||
|
@ -113,7 +117,8 @@ class xmlinterface {
|
|||
}
|
||||
}
|
||||
|
||||
function create_SEP_XML($store_path = '', $data_values = array(), $dev_config = array(), $dev_id = '', $lang_info = array()) {
|
||||
function create_SEP_XML($store_path = '', $data_values = array(), $dev_config = array(), $dev_id = '', $lang_info = array())
|
||||
{
|
||||
|
||||
$var_xml_general_fields = array('authenticationURL' => 'dev_authenticationURL', 'informationURL' => 'dev_informationURL', 'messagesURL' => 'dev_messagesURL',
|
||||
'servicesURL' => 'dev_servicesURL', 'directoryURL' => 'dev_directoryURL', 'proxyServerURL' => 'dev_proxyServerURL', 'idleTimeout' => 'dev_idleTimeout',
|
||||
|
@ -372,7 +377,8 @@ class xmlinterface {
|
|||
return time();
|
||||
}
|
||||
|
||||
private function get_server_sccp_bind($data_values = array()) {
|
||||
private function get_server_sccp_bind($data_values = array())
|
||||
{
|
||||
$res = array();
|
||||
if ($data_values['bindaddr'] !== '0.0.0.0') {
|
||||
return array('ip' => $data_values['bindaddr'], 'port' => $data_values['port']);
|
||||
|
@ -453,7 +459,8 @@ class xmlinterface {
|
|||
*
|
||||
*/
|
||||
|
||||
function create_SEP_SIP_XML($store_path = '', $data_values = array(), $dev_config = array(), $dev_id = '', $lang_info = array()) {
|
||||
function create_SEP_SIP_XML($store_path = '', $data_values = array(), $dev_config = array(), $dev_id = '', $lang_info = array())
|
||||
{
|
||||
|
||||
$var_xml_general_fields = array('authenticationURL' => 'dev_authenticationURL', 'informationURL' => 'dev_informationURL', 'messagesURL' => 'dev_messagesURL',
|
||||
'servicesURL' => 'dev_servicesURL', 'directoryURL' => 'dev_directoryURL', 'proxyServerURL' => 'dev_proxyServerURL', 'idleTimeout' => 'dev_idleTimeout',
|
||||
|
@ -771,7 +778,8 @@ class xmlinterface {
|
|||
return time();
|
||||
}
|
||||
|
||||
function save_DialPlan($confDir, $get_settings) {
|
||||
function save_DialPlan($confDir, $get_settings)
|
||||
{
|
||||
$xmlstr = "<DIALTEMPLATE>\n";
|
||||
$xmlstr .= "<versionStamp>" . time() . "</versionStamp>\n";
|
||||
$dialFelds = array('match', 'timeout', 'rewrite', 'tone'); //str -to lo !
|
||||
|
@ -806,8 +814,9 @@ class xmlinterface {
|
|||
} else {
|
||||
$errors = array('Fields Dial Plan Name is requered !!');
|
||||
}
|
||||
} else
|
||||
} else {
|
||||
$put_file = (string) $get_settings['idtemplate'];
|
||||
}
|
||||
} else {
|
||||
$errors = array('Fields Dial Plan Name is requered !!');
|
||||
}
|
||||
|
@ -822,7 +831,8 @@ class xmlinterface {
|
|||
return $errors;
|
||||
}
|
||||
|
||||
function create_xmlSoftkeyset($config, $confDir, $name) {
|
||||
function create_xmlSoftkeyset($config, $confDir, $name)
|
||||
{
|
||||
if (empty($config[$name])) {
|
||||
if ($name == 'default') {
|
||||
$typeSoft = $confDir["tftp_templates"] . '/SIPDefaultSoftKey.xml_template';
|
||||
|
@ -872,22 +882,25 @@ class xmlinterface {
|
|||
return $errors;
|
||||
}
|
||||
|
||||
private function replaceSimpleXmlNode($xml, $element = SimpleXMLElement) {
|
||||
private function replaceSimpleXmlNode($xml, $element = SimpleXMLElement)
|
||||
{
|
||||
$dom = dom_import_simplexml($xml);
|
||||
$import = $dom->ownerDocument->importNode(
|
||||
dom_import_simplexml($element), TRUE
|
||||
dom_import_simplexml($element),
|
||||
true
|
||||
);
|
||||
$dom->parentNode->replaceChild($import, $dom);
|
||||
}
|
||||
|
||||
private function appendSimpleXmlNode($xml, $element = SimpleXMLElement) {
|
||||
private function appendSimpleXmlNode($xml, $element = SimpleXMLElement)
|
||||
{
|
||||
|
||||
$dom = dom_import_simplexml($xml);
|
||||
$import = $dom->ownerDocument->importNode(
|
||||
dom_import_simplexml($element), TRUE
|
||||
dom_import_simplexml($element),
|
||||
true
|
||||
);
|
||||
// $dom->parentNode->appendChild($import, $dom);
|
||||
$dom->parentNode->appendChild($import->cloneNode(true));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,11 +1,4 @@
|
|||
/**
|
||||
* jQuery.SelectListActions
|
||||
* https://github.com/esausilva/jquery.selectlistactions.js
|
||||
*
|
||||
* (c) http://esausilva.com
|
||||
*/
|
||||
|
||||
(function ($) {
|
||||
(function ($) {
|
||||
//Moves selected item(s) from sourceList to destinationList
|
||||
$.fn.moveToList = function (sourceList, destinationList) {
|
||||
var opts = $(sourceList + ' option:selected');
|
||||
|
|
|
@ -140,7 +140,6 @@ $(document).ready(function () {
|
|||
if (data.reload === true && old_style ===true ) {
|
||||
location.reload();
|
||||
}
|
||||
|
||||
} else {
|
||||
bs_alert(data.message,data.status);
|
||||
}
|
||||
|
@ -278,9 +277,9 @@ $(document).ready(function () {
|
|||
case 'service':
|
||||
case 'feature':
|
||||
if (lval == 'featurep') {
|
||||
if ($('.futuretype').val() == 'parkinglot') {
|
||||
class_id = [kval,lval];
|
||||
}
|
||||
if ($('.futuretype').val() == 'parkinglot') {
|
||||
class_id = [kval,lval];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'speeddial':
|
||||
|
@ -311,7 +310,6 @@ $(document).ready(function () {
|
|||
$('#sccp_hw_addon').val('NONE').change();
|
||||
}
|
||||
$('#sccp_hw_addon').attr("disabled", "disabled");
|
||||
|
||||
} else {
|
||||
$('#sccp_hw_addon').removeAttr('disabled');
|
||||
}
|
||||
|
@ -328,7 +326,8 @@ $(document).ready(function () {
|
|||
|
||||
});
|
||||
|
||||
$('.sccp_button_hide').each(function () { // On page create !!
|
||||
$('.sccp_button_hide').each(function () {
|
||||
// On page create !!
|
||||
var dev_id = $(this).data('vhide');
|
||||
var dev_class = $(this).data('clhide');
|
||||
var dev_val = $(this).val();
|
||||
|
@ -391,7 +390,8 @@ $(document).ready(function () {
|
|||
|
||||
});
|
||||
|
||||
$('.sccp_button_disabled').each(function () { // On page create !!
|
||||
$('.sccp_button_disabled').each(function () {
|
||||
// On page create !!
|
||||
var dev_id = $(this).data('vhide');
|
||||
var dev_class = $(this).data('clhide');
|
||||
var dev_val = $(this).val();
|
||||
|
@ -584,7 +584,6 @@ $(document).ready(function () {
|
|||
});
|
||||
}
|
||||
console.log(datas);
|
||||
|
||||
}
|
||||
if ($(this).data('id') === 'delete_hardware') {
|
||||
var dev_cmd = $(this).data('id');
|
||||
|
@ -603,7 +602,6 @@ $(document).ready(function () {
|
|||
if (!confirm(_('Are you sure you wish to delete selected device ?'))) {
|
||||
dev_cmd = '';
|
||||
}
|
||||
|
||||
}
|
||||
if ($(this).data('id') === 'reset_dev' || $(this).data('id') === 'reset_token' || $(this).data('id') === 'update_button_label') {
|
||||
var dev_cmd = $(this).data('id');
|
||||
|
@ -636,11 +634,9 @@ $(document).ready(function () {
|
|||
} else {
|
||||
dev_cmd = '';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if (dev_cmd !== '') {
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax.php?module=sccp_manager&command=' + dev_cmd,
|
||||
|
@ -655,7 +651,7 @@ $(document).ready(function () {
|
|||
$('table').bootstrapTable('refresh');
|
||||
}
|
||||
if (data.reload === true && old_style === true) {
|
||||
location.reload();
|
||||
location.reload();
|
||||
}
|
||||
} else {
|
||||
if (Array.isArray(data.message)) {
|
||||
|
@ -676,7 +672,6 @@ $(document).ready(function () {
|
|||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -763,7 +758,8 @@ $("table").on("post-body.bs.table", function () {
|
|||
});
|
||||
});
|
||||
|
||||
function load_oncliсk(e, data) {
|
||||
function load_oncliсk(e, data)
|
||||
{
|
||||
|
||||
// console.log('load_oncliсk');
|
||||
var add_softkey = false;
|
||||
|
@ -821,7 +817,8 @@ function load_oncliсk(e, data) {
|
|||
}
|
||||
|
||||
|
||||
function add_dynamic_input(pe, pclass, vdefault) {
|
||||
function add_dynamic_input(pe, pclass, vdefault)
|
||||
{
|
||||
// We'd like a new one, please.
|
||||
pcls = pe.data('for');
|
||||
pname = pe.data('id');
|
||||
|
@ -846,7 +843,8 @@ function add_dynamic_input(pe, pclass, vdefault) {
|
|||
}
|
||||
}
|
||||
|
||||
function del_dynamic_table(pe, pclass, vdefault) {
|
||||
function del_dynamic_table(pe, pclass, vdefault)
|
||||
{
|
||||
pcls = pe.data('for');
|
||||
pname = pe.data('id');
|
||||
|
||||
|
@ -865,7 +863,8 @@ function del_dynamic_table(pe, pclass, vdefault) {
|
|||
}
|
||||
}
|
||||
|
||||
function add_dynamic_table(pe, pclass, vdefault) {
|
||||
function add_dynamic_table(pe, pclass, vdefault)
|
||||
{
|
||||
// We'd like a new one, please.
|
||||
pcls = pe.data('for');
|
||||
pname = pe.data('id');
|
||||
|
@ -1006,7 +1005,8 @@ var theForm = document.editIax;
|
|||
return unescape(result);
|
||||
}
|
||||
*/
|
||||
function bs_page_reload() {
|
||||
function bs_page_reload()
|
||||
{
|
||||
window.location.reload(false);
|
||||
}
|
||||
function bs_alert(data, status, reload)
|
||||
|
@ -1017,7 +1017,7 @@ function bs_alert(data, status, reload)
|
|||
data.forEach(function (entry) {
|
||||
alert(entry);
|
||||
});
|
||||
}else {
|
||||
} else {
|
||||
alert(data);
|
||||
}
|
||||
return true; // Old style
|
||||
|
@ -1038,10 +1038,10 @@ function bs_alert(data, status, reload)
|
|||
var modal2 = modal.find('.modal-body');
|
||||
var msg_html = '';
|
||||
if (Array.isArray(data)) {
|
||||
data.forEach(function(entry) {
|
||||
data.forEach(function (entry) {
|
||||
msg_html = msg_html + '<p>'+ entry + '</p>';
|
||||
});
|
||||
}else {
|
||||
} else {
|
||||
msg_html = data;
|
||||
}
|
||||
modal2[0].innerHTML = msg_html;
|
||||
|
@ -1059,13 +1059,15 @@ function hex2bin(hex)
|
|||
{
|
||||
var bytes = [], str;
|
||||
|
||||
for (var i = 0; i < hex.length - 1; i += 2)
|
||||
for (var i = 0; i < hex.length - 1; i += 2) {
|
||||
bytes.push(parseInt(hex.substr(i, 2), 16));
|
||||
}
|
||||
|
||||
return String.fromCharCode.apply(String, bytes);
|
||||
}
|
||||
|
||||
function sleep(milliseconds) {
|
||||
function sleep(milliseconds)
|
||||
{
|
||||
var start = new Date().getTime();
|
||||
for (var i = 0; i < 1e7; i++) {
|
||||
if ((new Date().getTime() - start) > milliseconds) {
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
// Templete for Sccp Driver
|
||||
//
|
||||
namespace FreePBX\modules\Core\Drivers;
|
||||
class Sccp extends \FreePBX\modules\Core\Driver {
|
||||
|
||||
class Sccp extends \FreePBX\modules\Core\Driver
|
||||
{
|
||||
private $data_fld = array("pin"=>'pin', "label" => 'label', "accountcode" => 'account',
|
||||
"context" =>'lcontext',"incominglimit"=>'incominglimit',
|
||||
"callgroup"=>'callgroup',"pickupgroup"=>'pickupgroup',
|
||||
|
@ -18,18 +20,19 @@ class Sccp extends \FreePBX\modules\Core\Driver {
|
|||
'namedcallgroup'=>'namedcallgroup', 'namedpickupgroup' => 'namedpickupgroup'
|
||||
);
|
||||
|
||||
public function getInfo() {
|
||||
return array(
|
||||
"rawName" => "sccp",
|
||||
"hardware" => "sccp_custom",
|
||||
"prettyName" => _("Sccp Custom Driver"),
|
||||
"shortName" => "SCCP",
|
||||
"description" => _("Sccp Device"),
|
||||
"Version" => "11.3",
|
||||
"about" => "Sccp mysql class Base ver: 11.3, Sccp ver: default"
|
||||
public function getInfo()
|
||||
{
|
||||
return array(
|
||||
"rawName" => "sccp",
|
||||
"hardware" => "sccp_custom",
|
||||
"prettyName" => _("Sccp Custom Driver"),
|
||||
"shortName" => "SCCP",
|
||||
"description" => _("Sccp Device"),
|
||||
"Version" => "11.3",
|
||||
"about" => "Sccp mysql class Base ver: 11.3, Sccp ver: default"
|
||||
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/* public function addDevice1($id, $settings) {
|
||||
$sql = 'INSERT INTO sccp (id, keyword, data, flags) values (?,?,?,?)';
|
||||
|
@ -41,170 +44,176 @@ class Sccp extends \FreePBX\modules\Core\Driver {
|
|||
return true;
|
||||
}
|
||||
*/
|
||||
public function addDevice($id, $settings) {
|
||||
public function addDevice($id, $settings)
|
||||
{
|
||||
$add_fld = array ("name"=>'label',"outboundcid"=>'cid_num',"langcode"=>'language',"extdisplay"=>'description');
|
||||
// print_r($_REQUEST);
|
||||
// echo '<br><br>';
|
||||
// die(print_r($settings));
|
||||
// print_r($_REQUEST);
|
||||
// echo '<br><br>';
|
||||
// die(print_r($settings));
|
||||
$settings['cid_num']['value']='';
|
||||
if (isset($_REQUEST)){
|
||||
foreach($add_fld as $key => $val) {
|
||||
if (!empty($_REQUEST[$key])){
|
||||
$settings[$val]['value'] = $_REQUEST[$key];
|
||||
}
|
||||
if (isset($_REQUEST)) {
|
||||
foreach ($add_fld as $key => $val) {
|
||||
if (!empty($_REQUEST[$key])) {
|
||||
$settings[$val]['value'] = $_REQUEST[$key];
|
||||
}
|
||||
}
|
||||
if (empty($settings['cid_num']['value'])) {
|
||||
$settings['cid_num']['value']= $id;
|
||||
}
|
||||
}
|
||||
if (empty($settings['cid_num']['value'])) {
|
||||
$settings['cid_num']['value']= $id;
|
||||
}
|
||||
$sql = 'INSERT INTO sccpline (name';
|
||||
$sqlv = 'values ("'.$id.'"';
|
||||
foreach($this->data_fld as $key => $val) {
|
||||
if (!empty($settings[$val]) ) {
|
||||
if (!empty($settings[$val]['value'])){
|
||||
$sql .= ', '.$key;
|
||||
$sqlv .= ", '".$settings[$val]['value']."' ";
|
||||
}
|
||||
foreach ($this->data_fld as $key => $val) {
|
||||
if (!empty($settings[$val])) {
|
||||
if (!empty($settings[$val]['value'])) {
|
||||
$sql .= ', '.$key;
|
||||
$sqlv .= ", '".$settings[$val]['value']."' ";
|
||||
}
|
||||
}
|
||||
}
|
||||
$sql .= ") ".$sqlv.");";
|
||||
$sth = $this->database->prepare($sql);
|
||||
$sth = $this->database->prepare($sql);
|
||||
$sth->execute();
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function delDevice($id) {
|
||||
$sql = "DELETE FROM sccpline WHERE name = ?";
|
||||
$sth = $this->database->prepare($sql);
|
||||
$sth->execute(array($id));
|
||||
return true;
|
||||
}
|
||||
public function delDevice($id)
|
||||
{
|
||||
$sql = "DELETE FROM sccpline WHERE name = ?";
|
||||
$sth = $this->database->prepare($sql);
|
||||
$sth->execute(array($id));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public function getDevice($id) {
|
||||
public function getDevice($id)
|
||||
{
|
||||
$sccp_line = array();
|
||||
// $sql = "SELECT name as id, name as name";
|
||||
$sql = "SELECT name as id, name as name ";
|
||||
foreach($this->data_fld as $key => $val) {
|
||||
// $sql = "SELECT name as id, name as name";
|
||||
$sql = "SELECT name as id, name as name ";
|
||||
foreach ($this->data_fld as $key => $val) {
|
||||
$sql .= ',`'. $key .'` as '.$val;
|
||||
}
|
||||
$sql .= " FROM sccpline WHERE name = ?";
|
||||
$sth = $this->database->prepare($sql);
|
||||
$result = array();
|
||||
$tech = array();
|
||||
try {
|
||||
$sth->execute(array($id));
|
||||
$result = $sth->fetch(\PDO::FETCH_ASSOC);
|
||||
}
|
||||
$sql .= " FROM sccpline WHERE name = ?";
|
||||
$sth = $this->database->prepare($sql);
|
||||
$result = array();
|
||||
$tech = array();
|
||||
try {
|
||||
$sth->execute(array($id));
|
||||
$result = $sth->fetch(\PDO::FETCH_ASSOC);
|
||||
$tech = $result;
|
||||
$tech['dial']='SCCP/'.$id;
|
||||
} catch(\Exception $e) {}
|
||||
} catch (\Exception $e) {
|
||||
}
|
||||
|
||||
return $tech;
|
||||
}
|
||||
return $tech;
|
||||
}
|
||||
|
||||
public function getDefaultDeviceSettings($id, $displayname, &$flag) {
|
||||
$dial = 'SCCP';
|
||||
$settings = array(
|
||||
"pin" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"incominglimit" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"lcontext" => array(
|
||||
"value" => "from-internal",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"callgroup" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"namedcallgroup" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"pickupgroup" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"namedpickupgroup" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"transfer" => array(
|
||||
"value" => "yes",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"adhocNumber" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"echocancel" => array(
|
||||
"value" => "no",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"dnd" => array(
|
||||
"value" => "UserDefined",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"silencesuppression" => array(
|
||||
"value" => "no",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"secondary_dialtone_digits" => array(
|
||||
"value" => "9",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"secondary_dialtone_tone" => array(
|
||||
"value" => "0x22",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"musicclass" => array(
|
||||
"value" => "default",
|
||||
"flag" => $flag++
|
||||
),
|
||||
);
|
||||
return array(
|
||||
"dial" => $dial,
|
||||
"settings" => $settings
|
||||
);
|
||||
}
|
||||
public function getDefaultDeviceSettings($id, $displayname, &$flag)
|
||||
{
|
||||
$dial = 'SCCP';
|
||||
$settings = array(
|
||||
"pin" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"incominglimit" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"lcontext" => array(
|
||||
"value" => "from-internal",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"callgroup" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"namedcallgroup" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"pickupgroup" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"namedpickupgroup" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"transfer" => array(
|
||||
"value" => "yes",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"adhocNumber" => array(
|
||||
"value" => "",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"echocancel" => array(
|
||||
"value" => "no",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"dnd" => array(
|
||||
"value" => "UserDefined",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"silencesuppression" => array(
|
||||
"value" => "no",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"secondary_dialtone_digits" => array(
|
||||
"value" => "9",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"secondary_dialtone_tone" => array(
|
||||
"value" => "0x22",
|
||||
"flag" => $flag++
|
||||
),
|
||||
"musicclass" => array(
|
||||
"value" => "default",
|
||||
"flag" => $flag++
|
||||
),
|
||||
);
|
||||
return array(
|
||||
"dial" => $dial,
|
||||
"settings" => $settings
|
||||
);
|
||||
}
|
||||
|
||||
# !TODO!: -TODO-: Would it not be better to put this part in the view directory (MVC) ? No, This is a template for Freepbx.
|
||||
public function getDeviceDisplay($display, $deviceInfo, $currentcomponent, $primarySection) {
|
||||
$section = _("Settings");
|
||||
$category = "general";
|
||||
$tmparr = array();
|
||||
$tt = _("The maximum number of incoming calls on this line.");
|
||||
// $tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '2', 'tt' => $tt, 'level' => 0, 'jsvalidation' => 'isEmpty()', 'failvalidationmsg' => $msgInvalidChannel);
|
||||
// !TODO!: Please change the default value for incominglimit to '6' or higher
|
||||
$tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '2', 'tt' => $tt, 'level' => 1);
|
||||
public function getDeviceDisplay($display, $deviceInfo, $currentcomponent, $primarySection)
|
||||
{
|
||||
$section = _("Settings");
|
||||
$category = "general";
|
||||
$tmparr = array();
|
||||
$tt = _("The maximum number of incoming calls on this line.");
|
||||
// $tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '2', 'tt' => $tt, 'level' => 0, 'jsvalidation' => 'isEmpty()', 'failvalidationmsg' => $msgInvalidChannel);
|
||||
// !TODO!: Please change the default value for incominglimit to '6' or higher
|
||||
$tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '2', 'tt' => $tt, 'level' => 1);
|
||||
|
||||
$tt = _("Asterisk context which this line will use to send and receive calls (Note: Only change this is you know what you are doing).");
|
||||
$tmparr['lcontext'] = array('prompttext' => _('Line context'), 'value' => 'from-internal', 'tt' => $tt, 'level' => 1);
|
||||
$tmparr['lcontext'] = array('prompttext' => _('Line context'), 'value' => 'from-internal', 'tt' => $tt, 'level' => 1);
|
||||
|
||||
// !TODO!: -TODO-: Maybe completely remove support for old numberic callgroup/pickupgroup in favor of the named version ? See Sccp.class.php.v431
|
||||
// !TODO!: -TODO-: Maybe completely remove support for old numberic callgroup/pickupgroup in favor of the named version ? See Sccp.class.php.v431
|
||||
$tt = _("Phone call group (numeric only, example:1,3-4)");
|
||||
$tmparr['callgroup'] = array('prompttext' => _('Call group id'),'value' => '', 'tt' => $tt, 'level' => 1);
|
||||
$tmparr['callgroup'] = array('prompttext' => _('Call group id'),'value' => '', 'tt' => $tt, 'level' => 1);
|
||||
|
||||
// !TODO!: -TODO-: multiple allowed (not sure if that is implemented here). See Sccp.class.php.v431
|
||||
// !TODO!: -TODO-: multiple allowed (not sure if that is implemented here). See Sccp.class.php.v431
|
||||
$tt = _("Phone named call group (>asterisk-11)");
|
||||
$tmparr['namedcallgroup'] = array('prompttext' => _('Named Call Group'),'value' => '', 'tt' => $tt, 'level' => 1);
|
||||
$tmparr['namedcallgroup'] = array('prompttext' => _('Named Call Group'),'value' => '', 'tt' => $tt, 'level' => 1);
|
||||
|
||||
$tt = _("Sets the pickup group (numeric only, example:1,3-4) this line is a member of. Allows this line to pickup calls from remote phones which are in this callhroup.");
|
||||
$tmparr['pickupgroup'] = array('prompttext' => _('Pickup group id'),'value' => '', 'tt' => $tt, 'level' => 1);
|
||||
|
||||
// !TODO!: -TODO-: multiple allowed (not sure if that is implemented here). See Sccp.class.php.v431
|
||||
// !TODO!: -TODO-: multiple allowed (not sure if that is implemented here). See Sccp.class.php.v431
|
||||
$tt = _("Sets the named pickup name group this line is a member of. Allows this line to pickup calls from remote phones which are in this name callgroup (>asterisk-11).");
|
||||
$tmparr['namedpickupgroup'] = array('prompttext' => _('Named Pickup Group'),'value' => '', 'tt' => $tt, 'level' => 1);
|
||||
$tmparr['namedpickupgroup'] = array('prompttext' => _('Named Pickup Group'),'value' => '', 'tt' => $tt, 'level' => 1);
|
||||
|
||||
$tt = _("Phone pincode (Note used)");
|
||||
$tmparr['pin'] = array('value' => '', 'tt' => $tt, 'level' => 1);
|
||||
$tmparr['pin'] = array('value' => '', 'tt' => $tt, 'level' => 1);
|
||||
|
||||
$tt = _("Digits to indicate an external line to user (secondary dialtone) Sample 9 or 8 (max 9 digits)");
|
||||
$tmparr['secondary_dialtone_digits'] = array('prompttext' => _('Secondary dialtone digits'), 'value' => '', 'tt' => $tt, 'level' => 1);
|
||||
$tmparr['secondary_dialtone_digits'] = array('prompttext' => _('Secondary dialtone digits'), 'value' => '', 'tt' => $tt, 'level' => 1);
|
||||
|
||||
unset($select);
|
||||
$select[] = array( 'value' => '0x21', 'text' => 'Inside Dial Tone');
|
||||
|
@ -249,8 +258,8 @@ class Sccp extends \FreePBX\modules\Core\Driver {
|
|||
$select[] = array( 'value' => '0x7A', 'text' => 'MLPP Bpa');
|
||||
$select[] = array( 'value' => '0x7B', 'text' => 'MLPP Bnea');
|
||||
$select[] = array( 'value' => '0x7C', 'text' => 'MLPP Upa');
|
||||
/* !TODO!: +TODO+: I would remove the values below this line, except for 'No Tone' */
|
||||
// $select[] = array( 'value' => '0x7F', 'text' => 'No Tone');
|
||||
/* !TODO!: +TODO+: I would remove the values below this line, except for 'No Tone' */
|
||||
// $select[] = array( 'value' => '0x7F', 'text' => 'No Tone');
|
||||
$select[] = array( 'value' => '0x80', 'text' => 'Meetme Greeting Tone');
|
||||
$select[] = array( 'value' => '0x81', 'text' => 'Meetme Number Invalid Tone');
|
||||
$select[] = array( 'value' => '0x82', 'text' => 'Meetme Number Failed Tone');
|
||||
|
@ -267,7 +276,7 @@ class Sccp extends \FreePBX\modules\Core\Driver {
|
|||
$tt = _("Outside dialtone frequency (defaul 0x22)");
|
||||
$tmparr['secondary_dialtone_tone'] = array('prompttext' => _('Secondary dialtone'), 'value' => '0x22', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'select');
|
||||
|
||||
# !TODO!: -TODO-: is there no easier way to specify a boolean radio group ? No.
|
||||
# !TODO!: -TODO-: is there no easier way to specify a boolean radio group ? No.
|
||||
unset($select);
|
||||
$select[] = array('value' => 'yes', 'text' => 'Yes');
|
||||
$select[] = array('value' => 'no', 'text' => 'No');
|
||||
|
@ -285,8 +294,8 @@ class Sccp extends \FreePBX\modules\Core\Driver {
|
|||
$select[] = array('value' => 'reject', 'text' => 'Reject');
|
||||
$select[] = array('value' => 'silent', 'text' => 'Silent');
|
||||
$select[] = array('value' => 'UserDefined', 'text' => 'UserDefined');
|
||||
# !TODO!: -TODO-: The next entry should be "null/empty" (not UserDefined) -> to indicate the trie-state behaviour
|
||||
# !TODO!: -TODO-: Userdefined is also a possible state, but it is not used or implemented (and it should not be implemented here, i think). See Sccp.class.php.v431, See Sccp.class.php - Old Style
|
||||
# !TODO!: -TODO-: The next entry should be "null/empty" (not UserDefined) -> to indicate the trie-state behaviour
|
||||
# !TODO!: -TODO-: Userdefined is also a possible state, but it is not used or implemented (and it should not be implemented here, i think). See Sccp.class.php.v431, See Sccp.class.php - Old Style
|
||||
$tt = _("DND: How will dnd react when it is set on the device level dnd can have three states: off / busy(reject) / silent / UserDefined").'<br>'.
|
||||
_("UserDefined - dnd that cycles through all three states off -> reject -> silent -> off (this is the normal behaviour)").'<br>'.
|
||||
_("Reject - Usesr can only switch off and on (in reject/busy mode)").'<br>'.
|
||||
|
@ -301,19 +310,19 @@ class Sccp extends \FreePBX\modules\Core\Driver {
|
|||
|
||||
unset($select);
|
||||
$select[] = array('value' => 'default', 'text' => _('default'));
|
||||
if (function_exists('music_list')){
|
||||
$moh_list = music_list();
|
||||
} else {
|
||||
$moh_list = array('default');
|
||||
}
|
||||
foreach ($moh_list as $value) {
|
||||
$select[] = array('value' => $value, 'text' => _($value));
|
||||
}
|
||||
if (function_exists('music_list')) {
|
||||
$moh_list = music_list();
|
||||
} else {
|
||||
$moh_list = array('default');
|
||||
}
|
||||
foreach ($moh_list as $value) {
|
||||
$select[] = array('value' => $value, 'text' => _($value));
|
||||
}
|
||||
|
||||
$tt = _("Music on hold");
|
||||
$tmparr['musicclass'] = array('prompttext' => _('Music on hold'), 'value' => 'no', 'tt' => $tt, 'select' => $select, 'level' => 1);
|
||||
|
||||
$devopts = $tmparr;
|
||||
return $devopts;
|
||||
}
|
||||
$devopts = $tmparr;
|
||||
return $devopts;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,41 +22,52 @@
|
|||
|
||||
*/
|
||||
|
||||
function after($this, $inthat) {
|
||||
if (!is_bool(strpos($inthat, $this)))
|
||||
function after($this, $inthat)
|
||||
{
|
||||
if (!is_bool(strpos($inthat, $this))) {
|
||||
return substr($inthat, strpos($inthat, $this) + strlen($this));
|
||||
}
|
||||
}
|
||||
|
||||
function after_last($this, $inthat) {
|
||||
if (!is_bool(strrevpos($inthat, $this)))
|
||||
function after_last($this, $inthat)
|
||||
{
|
||||
if (!is_bool(strrevpos($inthat, $this))) {
|
||||
return substr($inthat, strrevpos($inthat, $this) + strlen($this));
|
||||
}
|
||||
}
|
||||
|
||||
function before($this, $inthat) {
|
||||
function before($this, $inthat)
|
||||
{
|
||||
return substr($inthat, 0, strpos($inthat, $this));
|
||||
}
|
||||
|
||||
function before_last($this, $inthat) {
|
||||
function before_last($this, $inthat)
|
||||
{
|
||||
return substr($inthat, 0, strrevpos($inthat, $this));
|
||||
}
|
||||
|
||||
function between($this, $that, $inthat) {
|
||||
function between($this, $that, $inthat)
|
||||
{
|
||||
return before($that, after($this, $inthat));
|
||||
}
|
||||
|
||||
function between_last($this, $that, $inthat) {
|
||||
function between_last($this, $that, $inthat)
|
||||
{
|
||||
return after_last($this, before_last($that, $inthat));
|
||||
}
|
||||
|
||||
function strrevpos($instr, $needle) {
|
||||
function strrevpos($instr, $needle)
|
||||
{
|
||||
$rev_pos = strpos(strrev($instr), strrev($needle));
|
||||
if ($rev_pos === false)
|
||||
if ($rev_pos === false) {
|
||||
return false;
|
||||
else
|
||||
} else {
|
||||
return strlen($instr) - $rev_pos - strlen($needle);
|
||||
}
|
||||
}
|
||||
|
||||
function strpos_array($haystack, $needles) {
|
||||
function strpos_array($haystack, $needles)
|
||||
{
|
||||
if (is_array($needles)) {
|
||||
foreach ($needles as $str) {
|
||||
if (is_array($str)) {
|
||||
|
@ -64,14 +75,12 @@ function strpos_array($haystack, $needles) {
|
|||
} else {
|
||||
$pos = strpos($haystack, $str);
|
||||
}
|
||||
if ($pos !== FALSE) {
|
||||
if ($pos !== false) {
|
||||
return $pos;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return strpos($haystack, $needles);
|
||||
}
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
?>
|
79
install.php
79
install.php
|
@ -27,7 +27,8 @@ if (class_exists($class, false)) {
|
|||
$srvinterface = new $class();
|
||||
}
|
||||
|
||||
function Get_DB_config($sccp_compatible) {
|
||||
function Get_DB_config($sccp_compatible)
|
||||
{
|
||||
global $mobile_hw;
|
||||
$db_config_v0 = array(
|
||||
'sccpdevmodel' => array(
|
||||
|
@ -356,7 +357,7 @@ function Get_DB_config($sccp_compatible) {
|
|||
)
|
||||
);
|
||||
|
||||
if ($sccp_compatible >= 433 ) {
|
||||
if ($sccp_compatible >= 433) {
|
||||
if ($mobile_hw == '1') {
|
||||
return $db_config_v4M;
|
||||
}
|
||||
|
@ -378,9 +379,10 @@ $sccp_compatible = 0;
|
|||
//$db_config = $db_config_v0;
|
||||
$db_config = '';
|
||||
|
||||
function CheckSCCPManagerDBTables($table_req) {
|
||||
global $amp_conf;
|
||||
global $astman;
|
||||
function CheckSCCPManagerDBTables($table_req)
|
||||
{
|
||||
global $amp_conf;
|
||||
global $astman;
|
||||
global $db;
|
||||
outn("<li>" . _("Checking for Sccp_manager database tables..") . "</li>");
|
||||
foreach ($table_req as $value) {
|
||||
|
@ -394,25 +396,27 @@ global $astman;
|
|||
}
|
||||
}
|
||||
|
||||
function CheckSCCPManagerDBVersion() {
|
||||
function CheckSCCPManagerDBVersion()
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("Checking for previw version Sccp_manager..") . "</li>");
|
||||
$check = $db->getRow("SELECT data FROM `sccpsettings` where keyword ='sccp_compatible'", DB_FETCHMODE_ASSOC);
|
||||
if (DB::IsError($check)) {
|
||||
outn(_("Can't find previw version : "));
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
if (!empty($check['data'])) {
|
||||
outn(_("Find DB Schema : " . $check['data']));
|
||||
return $check['data'];
|
||||
} else {
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* notused */
|
||||
|
||||
function CheckPermissions() {
|
||||
function CheckPermissions()
|
||||
{
|
||||
outn("<li>" . _("Checking Filesystem Permissions") . "</li>");
|
||||
$dst = $_SERVER['DOCUMENT_ROOT'] . '/admin/modules/sccp_manager/views';
|
||||
if (fileowner($_SERVER['DOCUMENT_ROOT']) != fileowner($dst)) {
|
||||
|
@ -420,7 +424,8 @@ function CheckPermissions() {
|
|||
}
|
||||
}
|
||||
|
||||
function CheckAsteriskVersion() {
|
||||
function CheckAsteriskVersion()
|
||||
{
|
||||
outn("<li>" . _("Checking Asterisk Version : ") . $version . "</li>");
|
||||
$version = FreePBX::Config()->get('ASTVERSION');
|
||||
if (!empty($version)) {
|
||||
|
@ -439,7 +444,8 @@ function CheckAsteriskVersion() {
|
|||
return $ver_compatible;
|
||||
}
|
||||
|
||||
function CheckChanSCCPCompatible() {
|
||||
function CheckChanSCCPCompatible()
|
||||
{
|
||||
global $srvinterface, $astman;
|
||||
if (!$astman) {
|
||||
ie_freepbx('No asterisk manager connection provided!. Installation Failed');
|
||||
|
@ -449,7 +455,8 @@ function CheckChanSCCPCompatible() {
|
|||
return $sccp_compatible;
|
||||
}
|
||||
|
||||
function InstallDB_Buttons() {
|
||||
function InstallDB_Buttons()
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("Creating buttons table...") . "</li>");
|
||||
// $check = $db->getRow("SELECT 1 FROM buttonconfig LIMIT 0", DB_FETCHMODE_ASSOC);
|
||||
|
@ -470,10 +477,10 @@ function InstallDB_Buttons() {
|
|||
die_freepbx("Can not create sccpbuttonconfig table, error:$check\n");
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
function InstallDB_sccpsettings() {
|
||||
function InstallDB_sccpsettings()
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("Creating sccpsettings table...") . "</li>");
|
||||
$sql = "CREATE TABLE IF NOT EXISTS `sccpsettings` (
|
||||
|
@ -490,7 +497,8 @@ function InstallDB_sccpsettings() {
|
|||
return true;
|
||||
}
|
||||
|
||||
function InstallDB_sccpdevmodel() {
|
||||
function InstallDB_sccpdevmodel()
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("Creating sccpdevmodel table...") . "</li>");
|
||||
$sql = "CREATE TABLE IF NOT EXISTS `sccpdevmodel` (
|
||||
|
@ -512,7 +520,8 @@ function InstallDB_sccpdevmodel() {
|
|||
return true;
|
||||
}
|
||||
|
||||
function InstallDB_sccpuser() {
|
||||
function InstallDB_sccpuser()
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("Creating sccpuser table...") . "</li>");
|
||||
$sql = "CREATE TABLE IF NOT EXISTS `sccpuser` (
|
||||
|
@ -534,7 +543,8 @@ function InstallDB_sccpuser() {
|
|||
return true;
|
||||
}
|
||||
|
||||
function InstallDB_updateSchema($db_config) {
|
||||
function InstallDB_updateSchema($db_config)
|
||||
{
|
||||
global $db;
|
||||
if (!$db_config) {
|
||||
die_freepbx("No db_config provided");
|
||||
|
@ -658,7 +668,8 @@ function InstallDB_updateSchema($db_config) {
|
|||
return true;
|
||||
}
|
||||
|
||||
function InstallDB_fillsccpdevmodel() {
|
||||
function InstallDB_fillsccpdevmodel()
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("Fill sccpdevmodel") . "</li>");
|
||||
$sql = "REPLACE INTO `sccpdevmodel` (`model`, `vendor`, `dns`, `buttons`, `loadimage`, `loadinformationid`, `enabled`, `nametemplate`) VALUES ('12 SP', 'CISCO', 1, 1, '', 'loadInformation3', 0, NULL)," .
|
||||
|
@ -681,7 +692,8 @@ function InstallDB_fillsccpdevmodel() {
|
|||
return true;
|
||||
}
|
||||
|
||||
function InstallDB_updateSccpDevice() {
|
||||
function InstallDB_updateSccpDevice()
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("Update sccpdevice") . "</li>");
|
||||
$sql = "UPDATE `sccpdevice` set audio_tos='0xB8',audio_cos='6',video_tos='0x88',video_cos='5' where audio_tos=NULL or audio_tos='';";
|
||||
|
@ -691,7 +703,8 @@ function InstallDB_updateSccpDevice() {
|
|||
}
|
||||
}
|
||||
|
||||
function InstallDB_createButtonConfigTrigger() {
|
||||
function InstallDB_createButtonConfigTrigger()
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("(Re)Create buttonconfig trigger") . "</li>");
|
||||
$sql = "DROP TRIGGER IF EXISTS sccp_trg_buttonconfig;";
|
||||
|
@ -725,7 +738,8 @@ function InstallDB_createButtonConfigTrigger() {
|
|||
// outn("<li>" . $sql . "</li>");
|
||||
return true;
|
||||
}
|
||||
function InstallDB_updateDBVer($sccp_compatible) {
|
||||
function InstallDB_updateDBVer($sccp_compatible)
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("Update DB Ver") . "</li>");
|
||||
$sql = "REPLACE INTO `sccpsettings` (`keyword`, `data`, `seq`, `type`), VALUES ('SccpDBmodel', '"+$sccp_compatible+ "','30','0');";
|
||||
|
@ -736,7 +750,8 @@ function InstallDB_updateDBVer($sccp_compatible) {
|
|||
return true;
|
||||
}
|
||||
|
||||
function InstallDB_CreateSccpDeviceConfigView($sccp_compatible) {
|
||||
function InstallDB_CreateSccpDeviceConfigView($sccp_compatible)
|
||||
{
|
||||
global $db;
|
||||
outn("<li>" . _("(Re)Create sccpdeviceconfig view") . "</li>");
|
||||
$sql = "";
|
||||
|
@ -785,21 +800,20 @@ function InstallDB_CreateSccpDeviceConfigView($sccp_compatible) {
|
|||
|
||||
global $mobile_hw;
|
||||
if ($mobile_hw == '1') {
|
||||
$sql .= "CREATE OR REPLACE ALGORITHM = MERGE VIEW sccpdeviceconfig AS
|
||||
$sql .= "CREATE OR REPLACE ALGORITHM = MERGE VIEW sccpdeviceconfig AS
|
||||
SELECT GROUP_CONCAT( CONCAT_WS( ',', sccpbuttonconfig.buttontype, sccpbuttonconfig.name, sccpbuttonconfig.options )
|
||||
ORDER BY instance ASC SEPARATOR ';' ) AS sccpbutton, sccpdevice.*
|
||||
FROM sccpdevice
|
||||
LEFT JOIN sccpbuttonconfig ON (sccpbuttonconfig.reftype = 'sccpdevice' AND sccpbuttonconfig.ref = sccpdevice.name )
|
||||
GROUP BY sccpdevice.name; ";
|
||||
$sql .= "CREATE OR REPLACE ALGORITHM = MERGE VIEW sccpuserconfig AS
|
||||
$sql .= "CREATE OR REPLACE ALGORITHM = MERGE VIEW sccpuserconfig AS
|
||||
SELECT GROUP_CONCAT( CONCAT_WS( ',', sccpbuttonconfig.buttontype, sccpbuttonconfig.name, sccpbuttonconfig.options )
|
||||
ORDER BY instance ASC SEPARATOR ';' ) AS button, sccpuser.*
|
||||
FROM sccpuser
|
||||
LEFT JOIN sccpbuttonconfig ON ( sccpbuttonconfig.reftype = 'sccpuser' AND sccpbuttonconfig.ref = sccpuser.id)
|
||||
GROUP BY sccpuser.name; ";
|
||||
|
||||
} else {
|
||||
$sql .= "CREATE OR REPLACE
|
||||
$sql .= "CREATE OR REPLACE
|
||||
ALGORITHM = MERGE
|
||||
VIEW sccpdeviceconfig AS
|
||||
SELECT case sccpdevice._profileid
|
||||
|
@ -821,7 +835,8 @@ function InstallDB_CreateSccpDeviceConfigView($sccp_compatible) {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
function CreateBackUpConfig() {
|
||||
function CreateBackUpConfig()
|
||||
{
|
||||
global $amp_conf;
|
||||
outn("<li>" . _("Create Config BackUp") . "</li>");
|
||||
$cnf_int = \FreePBX::Config();
|
||||
|
@ -830,7 +845,7 @@ function CreateBackUpConfig() {
|
|||
$dir = $cnf_int->get('ASTETCDIR');
|
||||
|
||||
$fsql = $dir.'/sccp_backup_'.date("Ymd").'.sql';
|
||||
$result = exec('mysqldump '.$amp_conf['AMPDBNAME'].' --password='.$amp_conf['AMPDBPASS'].' --user='.$amp_conf['AMPDBUSER'].' --single-transaction >'.$fsql ,$output);
|
||||
$result = exec('mysqldump '.$amp_conf['AMPDBNAME'].' --password='.$amp_conf['AMPDBPASS'].' --user='.$amp_conf['AMPDBUSER'].' --single-transaction >'.$fsql, $output);
|
||||
|
||||
$zip = new \ZipArchive();
|
||||
$filename = $dir . "/sccp_instal_backup" . date("Ymd"). ".zip";
|
||||
|
@ -853,7 +868,8 @@ function CreateBackUpConfig() {
|
|||
outn("<li>" . _("Create Config BackUp: ") . $filename ."</li>");
|
||||
}
|
||||
|
||||
function RenameConfig() {
|
||||
function RenameConfig()
|
||||
{
|
||||
global $amp_conf;
|
||||
outn("<li>" . _("Move Old Config") . "</li>");
|
||||
$cnf_int = \FreePBX::Config();
|
||||
|
@ -869,7 +885,8 @@ function RenameConfig() {
|
|||
}
|
||||
}
|
||||
|
||||
function Setup_RealTime() {
|
||||
function Setup_RealTime()
|
||||
{
|
||||
global $amp_conf;
|
||||
outn("<li>" . _("Pre config RealTime") . "</li>");
|
||||
$cnf_int = \FreePBX::Config();
|
||||
|
@ -948,7 +965,7 @@ CheckSCCPManagerDBTables($table_req);
|
|||
#CheckPermissions();
|
||||
CheckAsteriskVersion();
|
||||
$sccp_compatible = CheckChanSCCPCompatible();
|
||||
if ($sccp_compatible == 0) {
|
||||
if ($sccp_compatible == 0) {
|
||||
// die_freepbx('Chan Sccp not Found. Install it before continuing');
|
||||
outn("<br>");
|
||||
outn("<font color='red'>Chan Sccp not Found. Install it before continuing !</font>");
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<?php /* $Id:$ */
|
||||
if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); }
|
||||
if (!defined('FREEPBX_IS_AUTH')) {
|
||||
die('No direct script access allowed');
|
||||
}
|
||||
// License for all code of this FreePBX module can be found in the license file inside the module directory
|
||||
// Copyright 2015 Sangoma Technologies.
|
||||
//
|
||||
|
@ -23,33 +25,33 @@ if (empty($spage->class_error)) {
|
|||
?>
|
||||
|
||||
<div class="container-fluid">
|
||||
<h1><?php echo $display_info?></h1>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="fpbx-container">
|
||||
<div class="display no-border">
|
||||
<div class="nav-container">
|
||||
<div class="scroller scroller-left"><i class="glyphicon glyphicon-chevron-left"></i></div>
|
||||
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
|
||||
<div class="wrapper">
|
||||
<ul class="nav nav-tabs list" role="tablist">
|
||||
<?php foreach($display_page as $key => $page) { ?>
|
||||
<li data-name="<?php echo $key?>" class="change-tab <?php echo $key == 'general' ? 'active' : ''?>"><a href="#<?php echo $key?>" aria-controls="<?php echo $key?>" role="tab" data-toggle="tab"><?php echo $page['name']?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content display">
|
||||
<?php foreach($display_page as $key => $page) { ?>
|
||||
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
|
||||
<?php echo $page['content']?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<h1><?php echo $display_info?></h1>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="fpbx-container">
|
||||
<div class="display no-border">
|
||||
<div class="nav-container">
|
||||
<div class="scroller scroller-left"><i class="glyphicon glyphicon-chevron-left"></i></div>
|
||||
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
|
||||
<div class="wrapper">
|
||||
<ul class="nav nav-tabs list" role="tablist">
|
||||
<?php foreach ($display_page as $key => $page) { ?>
|
||||
<li data-name="<?php echo $key?>" class="change-tab <?php echo $key == 'general' ? 'active' : ''?>"><a href="#<?php echo $key?>" aria-controls="<?php echo $key?>" role="tab" data-toggle="tab"><?php echo $page['name']?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content display">
|
||||
<?php foreach ($display_page as $key => $page) { ?>
|
||||
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
|
||||
<?php echo $page['content']?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal alerts-->
|
||||
<div class="modal" id="hwalert" tabindex="-1" role="dialog" aria-labelledby="lhwalert">
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<?php /* $Id:$ */
|
||||
if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); }
|
||||
if (!defined('FREEPBX_IS_AUTH')) {
|
||||
die('No direct script access allowed');
|
||||
}
|
||||
// License for all code of this FreePBX module can be found in the license file inside the module directory
|
||||
// Copyright 2015 Sangoma Technologies.
|
||||
//
|
||||
|
@ -24,33 +26,33 @@ if (empty($spage->class_error)) {
|
|||
?>
|
||||
|
||||
<div class="container-fluid">
|
||||
<h1><?php echo $display_info?></h1>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="fpbx-container">
|
||||
<div class="display no-border">
|
||||
<div class="nav-container">
|
||||
<div class="scroller scroller-left"><i class="glyphicon glyphicon-chevron-left"></i></div>
|
||||
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
|
||||
<div class="wrapper">
|
||||
<ul class="nav nav-tabs list" role="tablist">
|
||||
<?php foreach($display_page as $key => $page) { ?>
|
||||
<li data-name="<?php echo $key?>" class="change-tab <?php echo $key == 'general' ? 'active' : ''?>"><a href="#<?php echo $key?>" aria-controls="<?php echo $key?>" role="tab" data-toggle="tab"><?php echo $page['name']?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content display">
|
||||
<?php foreach($display_page as $key => $page) { ?>
|
||||
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
|
||||
<?php echo $page['content']?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<h1><?php echo $display_info?></h1>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="fpbx-container">
|
||||
<div class="display no-border">
|
||||
<div class="nav-container">
|
||||
<div class="scroller scroller-left"><i class="glyphicon glyphicon-chevron-left"></i></div>
|
||||
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
|
||||
<div class="wrapper">
|
||||
<ul class="nav nav-tabs list" role="tablist">
|
||||
<?php foreach ($display_page as $key => $page) { ?>
|
||||
<li data-name="<?php echo $key?>" class="change-tab <?php echo $key == 'general' ? 'active' : ''?>"><a href="#<?php echo $key?>" aria-controls="<?php echo $key?>" role="tab" data-toggle="tab"><?php echo $page['name']?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content display">
|
||||
<?php foreach ($display_page as $key => $page) { ?>
|
||||
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
|
||||
<?php echo $page['content']?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal alerts-->
|
||||
<div class="modal" id="hwalert" tabindex="-1" role="dialog" aria-labelledby="lhwalert">
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<?php /* $Id:$ */
|
||||
if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); }
|
||||
if (!defined('FREEPBX_IS_AUTH')) {
|
||||
die('No direct script access allowed');
|
||||
}
|
||||
// License for all code of this FreePBX module can be found in the license file inside the module directory
|
||||
// Copyright 2015 Sangoma Technologies.
|
||||
// vim: set ai ts=4 sw=4 ft=php:
|
||||
|
@ -12,33 +14,33 @@ $spage = FreePBX::create()->Sccp_manager;
|
|||
?>
|
||||
|
||||
<div class="container-fluid">
|
||||
<h1><?php echo _("SCCP Server Settings")?></h1>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="fpbx-container">
|
||||
<div class="display no-border">
|
||||
<div class="nav-container">
|
||||
<div class="scroller scroller-left"><i class="glyphicon glyphicon-chevron-left"></i></div>
|
||||
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
|
||||
<div class="wrapper">
|
||||
<ul class="nav nav-tabs list" role="tablist">
|
||||
<?php foreach($spage->myShowPage() as $key => $page) { ?>
|
||||
<li data-name="<?php echo $key?>" class="change-tab <?php echo $key == 'general' ? 'active' : ''?>"><a href="#<?php echo $key?>" aria-controls="<?php echo $key?>" role="tab" data-toggle="tab"><?php echo $page['name']?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content display">
|
||||
<?php foreach($spage->myShowPage() as $key => $page) { ?>
|
||||
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
|
||||
<?php echo $page['content']?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<h1><?php echo _("SCCP Server Settings")?></h1>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="fpbx-container">
|
||||
<div class="display no-border">
|
||||
<div class="nav-container">
|
||||
<div class="scroller scroller-left"><i class="glyphicon glyphicon-chevron-left"></i></div>
|
||||
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
|
||||
<div class="wrapper">
|
||||
<ul class="nav nav-tabs list" role="tablist">
|
||||
<?php foreach ($spage->myShowPage() as $key => $page) { ?>
|
||||
<li data-name="<?php echo $key?>" class="change-tab <?php echo $key == 'general' ? 'active' : ''?>"><a href="#<?php echo $key?>" aria-controls="<?php echo $key?>" role="tab" data-toggle="tab"><?php echo $page['name']?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content display">
|
||||
<?php foreach ($spage->myShowPage() as $key => $page) { ?>
|
||||
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
|
||||
<?php echo $page['content']?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal alerts-->
|
||||
<div class="modal" id="hwalert" tabindex="-1" role="dialog" aria-labelledby="lhwalert">
|
||||
|
|
|
@ -30,45 +30,45 @@ function CreateBackUpConfig() {
|
|||
outn("<li>" . _("Create Config BackUp: ") . $filename ."</li>");
|
||||
}
|
||||
*/
|
||||
if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); }
|
||||
if (!defined('FREEPBX_IS_AUTH')) {
|
||||
die('No direct script access allowed');
|
||||
}
|
||||
|
||||
global $db;
|
||||
$version = FreePBX::Config()->get('ASTVERSION');
|
||||
|
||||
out('Remove all SCCP tables');
|
||||
$tables = array('sccpdevmodel', 'sccpsettings');
|
||||
foreach ($tables as $table) {
|
||||
$sql = "DROP TABLE IF EXISTS {$table}";
|
||||
$result = $db->query($sql);
|
||||
if (DB::IsError($result)) {
|
||||
die_freepbx($result->getDebugInfo());
|
||||
}
|
||||
unset($result);
|
||||
foreach ($tables as $table) {
|
||||
$sql = "DROP TABLE IF EXISTS {$table}";
|
||||
$result = $db->query($sql);
|
||||
if (DB::IsError($result)) {
|
||||
die_freepbx($result->getDebugInfo());
|
||||
}
|
||||
unset($result);
|
||||
}
|
||||
if (!empty($version)) {
|
||||
// Woo, we have a version
|
||||
$check = $db->getRow("SELECT 1 FROM `kvstore` LIMIT 0", DB_FETCHMODE_ASSOC);
|
||||
if (!(DB::IsError($check))) {
|
||||
//print_r("none, creating table :". $value);
|
||||
echo "Deleting key FROM kvstore..";
|
||||
sql("DELETE FROM kvstore WHERE module = 'sccpsettings'");
|
||||
sql("DELETE FROM kvstore WHERE module = 'Sccp_manager'");
|
||||
}
|
||||
if (!empty($version)) {
|
||||
// Woo, we have a version
|
||||
$check = $db->getRow("SELECT 1 FROM `kvstore` LIMIT 0", DB_FETCHMODE_ASSOC);
|
||||
if (!(DB::IsError($check))) {
|
||||
//print_r("none, creating table :". $value);
|
||||
echo "Deleting key FROM kvstore..";
|
||||
sql("DELETE FROM kvstore WHERE module = 'sccpsettings'");
|
||||
sql("DELETE FROM kvstore WHERE module = 'Sccp_manager'");
|
||||
}
|
||||
|
||||
/* Comment: Maybe save in sccpsettings, if the chan_sccp tables already existed in the database or if they were created by install.php */
|
||||
/* So that you know if it is save to drop/delete them */
|
||||
|
||||
/* DROP VIEW IF EXISTS`sccpdeviceconfig`;
|
||||
DROP TABLE IF EXISTS `sccpbuttonconfig`;
|
||||
DROP TABLE IF EXISTS `sccpdevice`;
|
||||
DROP TABLE IF EXISTS `sccpdevmodel`;
|
||||
DROP TABLE IF EXISTS `sccpline`;
|
||||
DROP TABLE IF EXISTS `sccpsettings`;
|
||||
DROP TABLE IF EXISTS `sccpuser`;
|
||||
DROP TABLE IF EXISTS `sccpbuttonconfig`;
|
||||
DROP TABLE IF EXISTS `sccpdevice`;
|
||||
DROP TABLE IF EXISTS `sccpdevmodel`;
|
||||
DROP TABLE IF EXISTS `sccpline`;
|
||||
DROP TABLE IF EXISTS `sccpsettings`;
|
||||
DROP TABLE IF EXISTS `sccpuser`;
|
||||
*
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
echo "done<br>\n";
|
||||
|
||||
?>
|
||||
|
|
|
@ -53,7 +53,7 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
|
|||
<div class="display no-border">
|
||||
<div id="toolbar-all">
|
||||
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" onclick="load_oncliсk(this,'*new*')" data-target=".edit_new_keyset"><i class="fa fa-bolt"></i> <?php echo _("Add Keyset"); ?></button>
|
||||
</div>
|
||||
</div>
|
||||
<table data-cookie="true" data-cookie-id-table="sccp_keyset-all" data-url="ajax.php?module=sccp_manager&command=getSoftKey&type=active" data-cache="false" data-show-refresh="true" data-toolbar="#toolbar-all" data-maintain-selected="true" data-show-columns="true" data-show-toggle="true" data-toggle="table" data-pagination="true" data-search="true" class="table table-striped ext-list" id="softkey-all" data-unique-id="softkeys">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -62,19 +62,19 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
|
|||
<?php
|
||||
$i = 0;
|
||||
foreach ($keynamearray as $key => $value) {
|
||||
if ($i < 9 ){
|
||||
if ($i < 9) {
|
||||
echo '<th data-sortable="false" data-field="'.$key.'">'._($value['sname']).'</th>';
|
||||
}
|
||||
$i ++;
|
||||
}
|
||||
?>
|
||||
?>
|
||||
<th data-field="actions" data-formatter="DispayActionsKeyFormatter"><?php echo _('Actions')?></th>
|
||||
</tr>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -106,46 +106,45 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
|
|||
|
||||
<?php
|
||||
$i = 0;
|
||||
foreach ($keysetarray as $key => $value) {
|
||||
if ($i == 0) {
|
||||
echo '<li role="presentation" data-name="'.$key.'" class="active">';
|
||||
} else {
|
||||
echo '<li role="presentation" data-name="'.$key.'" class="change-tab">';
|
||||
}
|
||||
echo '<a href="#'.$key.'" aria-controls="'.$key.'" role="tab" data-toggle="tab">'._($key);
|
||||
echo '</a></li>';
|
||||
$i ++;
|
||||
|
||||
}
|
||||
foreach ($keysetarray as $key => $value) {
|
||||
if ($i == 0) {
|
||||
echo '<li role="presentation" data-name="'.$key.'" class="active">';
|
||||
} else {
|
||||
echo '<li role="presentation" data-name="'.$key.'" class="change-tab">';
|
||||
}
|
||||
echo '<a href="#'.$key.'" aria-controls="'.$key.'" role="tab" data-toggle="tab">'._($key);
|
||||
echo '</a></li>';
|
||||
$i ++;
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</ul>
|
||||
<div class="tab-content display">
|
||||
<?php
|
||||
$i = 0;
|
||||
foreach ($keysetarray as $key => $value) {
|
||||
if ($i == 0) {
|
||||
echo '<div role="tabpanel" id="'.$key.'" class="tab-pane active">';
|
||||
} else {
|
||||
echo '<div role="tabpanel" id="'.$key.'" class="tab-pane">';
|
||||
}
|
||||
echo '<div class="element-container"><div class="row"><div class="form-group"><div class="col-md-3"><label class="control-label" for="'.$key.'">'._($keynamearray[$key]['name']).'</label>';
|
||||
echo '<i class="fa fa-question-circle fpbx-help-icon" data-for="'.$key.'"></i></div>';
|
||||
foreach ($keysetarray as $key => $value) {
|
||||
if ($i == 0) {
|
||||
echo '<div role="tabpanel" id="'.$key.'" class="tab-pane active">';
|
||||
} else {
|
||||
echo '<div role="tabpanel" id="'.$key.'" class="tab-pane">';
|
||||
}
|
||||
echo '<div class="element-container"><div class="row"><div class="form-group"><div class="col-md-3"><label class="control-label" for="'.$key.'">'._($keynamearray[$key]['name']).'</label>';
|
||||
echo '<i class="fa fa-question-circle fpbx-help-icon" data-for="'.$key.'"></i></div>';
|
||||
|
||||
echo '<div class="col-md-4"><select multiple class="form-control sccpmultiselect" name="av_'.$key.'" id="source_'.$key.'">';
|
||||
$row_dada= explode(',', $value);
|
||||
foreach ($row_dada as $data) {
|
||||
echo '<option value="'.$data.'">'.$data.'</option>';
|
||||
}
|
||||
echo '</select></div><div class="col-md-1">';
|
||||
foreach ($keymultiselect as $btkey =>$btval) {
|
||||
echo '<input type="button" class="btnMultiselect" data-id="'.$key.'" data-key="'.$btkey.'" value="'.$btval.'">';
|
||||
}
|
||||
echo '</div><div class="col-md-4"><select multiple class="form-control" name="sel_'.$key.'" id="destination_'.$key.'">';
|
||||
echo '</select></div></div></div><div class="row"><div class="col-md-12">';
|
||||
echo '<span id="'.$key.'-help" class="help-block fpbx-help-block">'._($keynamearray[$key]['help']).'</span>';
|
||||
echo '</div></div></div></div>';
|
||||
$i ++;
|
||||
}
|
||||
echo '<div class="col-md-4"><select multiple class="form-control sccpmultiselect" name="av_'.$key.'" id="source_'.$key.'">';
|
||||
$row_dada= explode(',', $value);
|
||||
foreach ($row_dada as $data) {
|
||||
echo '<option value="'.$data.'">'.$data.'</option>';
|
||||
}
|
||||
echo '</select></div><div class="col-md-1">';
|
||||
foreach ($keymultiselect as $btkey => $btval) {
|
||||
echo '<input type="button" class="btnMultiselect" data-id="'.$key.'" data-key="'.$btkey.'" value="'.$btval.'">';
|
||||
}
|
||||
echo '</div><div class="col-md-4"><select multiple class="form-control" name="sel_'.$key.'" id="destination_'.$key.'">';
|
||||
echo '</select></div></div></div><div class="row"><div class="col-md-12">';
|
||||
echo '<span id="'.$key.'-help" class="help-block fpbx-help-block">'._($keynamearray[$key]['help']).'</span>';
|
||||
echo '</div></div></div></div>';
|
||||
$i ++;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
<label class="control-label" for="new_dns"><?php echo _('Expansion Module');?></label>
|
||||
<i class="fa fa-question-circle fpbx-help-icon" data-for="new_dns"></i>
|
||||
</div><div class="col-md-9">
|
||||
<select name="new_dns" id="new_dns">
|
||||
<select name="new_dns" id="new_dns">
|
||||
<option value="1">Phone - no sidecars.</option>
|
||||
<option value="2">Phone - one sidecar.</option>
|
||||
<option value="3">Phone - two sidecars.</option>
|
||||
|
@ -204,8 +204,8 @@
|
|||
|
||||
<script>
|
||||
function StatusIconFormatter(value, row) {
|
||||
return (value === '1') ? '<i class="fa fa-check-square-o" style="color:green" title="<?php echo _("Device is enabled")?>"></i>' : '<i class="fa fa-square-o" title="<?php echo _("Device is disabled")?>"></i>';
|
||||
}
|
||||
return (value === '1') ? '<i class="fa fa-check-square-o" style="color:green" title="<?php echo _("Device is enabled")?>"></i>' : '<i class="fa fa-square-o" title="<?php echo _("Device is disabled")?>"></i>';
|
||||
}
|
||||
function DisplayDnsFormatter(value, row, index) {
|
||||
var exp_model = ['Expansion Module', 'Not Available', 'One ExpModule', 'Two ExpModule'];
|
||||
return exp_model[value];
|
||||
|
|
|
@ -17,7 +17,7 @@ $def_val['directed_pickup_context'] = array("keyword" => 'directed_pickup_conte
|
|||
if (!empty($_REQUEST['new_id'])) {
|
||||
$dev_id = $_REQUEST['new_id'];
|
||||
$val = str_replace(array('SEP','ATA','VG'), '', $dev_id);
|
||||
$val = implode('.',sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
|
||||
$val = implode('.', sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
|
||||
$def_val['mac'] = array("keyword" => 'mac', "data" => $val, "seq" => "99");
|
||||
$val = $_REQUEST['type'];
|
||||
$def_val['type'] = array("keyword" => 'type', "data" => $val, "seq" => "99");
|
||||
|
@ -34,27 +34,27 @@ if (!empty($_REQUEST['id'])) {
|
|||
if (!empty($val)) {
|
||||
switch ($key) {
|
||||
case 'type':
|
||||
$tmp_raw = $this->getSccp_model_information('byid', TRUE, 'all', array('model'=>$val));
|
||||
$tmp_raw = $this->getSccp_model_information('byid', true, 'all', array('model'=>$val));
|
||||
if (!empty($tmp_raw[0])) {
|
||||
$tmp_raw = $tmp_raw[0];
|
||||
}
|
||||
if (!empty($tmp_raw['validate'])) {
|
||||
$tmpar = explode(";",$tmp_raw['validate']);
|
||||
$tmpar = explode(";", $tmp_raw['validate']);
|
||||
if ($tmpar[0] != 'yes') {
|
||||
$device_warning['Image'] = Array('Device firmware not found : '.$tmp_raw['loadimage']);
|
||||
$device_warning['Image'] = array('Device firmware not found : '.$tmp_raw['loadimage']);
|
||||
}
|
||||
if ($tmpar[1] != 'yes') {
|
||||
$device_warning['Template'] = Array('Missing device configuration template : '. $tmp_raw['nametemplate']);
|
||||
$device_warning['Template'] = array('Missing device configuration template : '. $tmp_raw['nametemplate']);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'name':
|
||||
$key = 'mac';
|
||||
$val = str_replace(array('SEP','ATA','VG'), '', $val);
|
||||
$val = implode('.',sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
|
||||
$val = implode('.', sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
|
||||
break;
|
||||
case '_hwlang':
|
||||
$tmpar = explode(":",$val);
|
||||
$tmpar = explode(":", $val);
|
||||
$def_val['netlang'] = array("keyword" => 'netlang', "data" => $tmpar[0], "seq" => "99");
|
||||
$def_val['devlang'] = array("keyword" => 'devlang', "data" => $tmpar[1], "seq" => "99");
|
||||
break;
|
||||
|
@ -79,14 +79,14 @@ if (!empty($device_warning)) {
|
|||
<h2 style="border:2px solid Tomato;color:Tomato;" >Warning in the SCCP Device</h2>
|
||||
<div class="table-responsive">
|
||||
<?php
|
||||
foreach ($device_warning as $key => $value) {
|
||||
echo '<h3>'.$key.'</h3>';
|
||||
if (is_array($value)) {
|
||||
echo '<li>'._(implode('</li><li>', $value)).'</li>';
|
||||
} else {
|
||||
echo '<li>'. _($value).'</li>';
|
||||
}
|
||||
foreach ($device_warning as $key => $value) {
|
||||
echo '<h3>'.$key.'</h3>';
|
||||
if (is_array($value)) {
|
||||
echo '<li>'._(implode('</li><li>', $value)).'</li>';
|
||||
} else {
|
||||
echo '<li>'. _($value).'</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</pre>
|
||||
</div>
|
||||
|
@ -102,12 +102,12 @@ if (!empty($device_warning)) {
|
|||
<input type="hidden" name="Submit" value="Submit">
|
||||
|
||||
<?php
|
||||
if (empty($dev_new)){
|
||||
if (empty($dev_new)) {
|
||||
echo '<input type="hidden" name="sccp_deviceid" value="new">';
|
||||
} else {
|
||||
echo '<input type="hidden" name="sccp_deviceid" value="'.$dev_id.'">';
|
||||
}
|
||||
if (empty($dev_id)){
|
||||
if (empty($dev_id)) {
|
||||
echo $this->ShowGroup('sccp_hw_dev', 1, 'sccp_hw', $def_val);
|
||||
} else {
|
||||
echo $this->ShowGroup('sccp_hw_dev_edit', 1, 'sccp_hw', $def_val);
|
||||
|
|
|
@ -12,7 +12,7 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
$dev_id = $_REQUEST['ru_id'];
|
||||
$def_val['id'] = array("keyword" => 'id', "data" => $dev_id, "seq" => "99");
|
||||
$db_res = $this->dbinterface->get_db_SccpTableData('get_sccpuser', array("id" => $dev_id));
|
||||
if (!empty($db_res) ) {
|
||||
if (!empty($db_res)) {
|
||||
foreach ($db_res as $key => $val) {
|
||||
if (!empty($val)) {
|
||||
$def_val[$key] = array("keyword" => $key, "data" => $val, "seq" => "99");
|
||||
|
|
|
@ -17,7 +17,7 @@ $def_val['directed_pickup_context'] = array("keyword" => 'directed_pickup_conte
|
|||
if (!empty($_REQUEST['new_id'])) {
|
||||
$dev_id = $_REQUEST['new_id'];
|
||||
$val = str_replace(array('SEP','ATA','VG'), '', $dev_id);
|
||||
$val = implode('.',sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
|
||||
$val = implode('.', sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
|
||||
$def_val['mac'] = array("keyword" => 'mac', "data" => $val, "seq" => "99");
|
||||
$val = $_REQUEST['type'];
|
||||
$def_val['type'] = array("keyword" => 'type', "data" => $val, "seq" => "99");
|
||||
|
@ -34,27 +34,27 @@ if (!empty($_REQUEST['id'])) {
|
|||
if (!empty($val)) {
|
||||
switch ($key) {
|
||||
case 'type':
|
||||
$tmp_raw = $this->getSccp_model_information('byid', TRUE, 'all', array('model'=>$val));
|
||||
$tmp_raw = $this->getSccp_model_information('byid', true, 'all', array('model'=>$val));
|
||||
if (!empty($tmp_raw[0])) {
|
||||
$tmp_raw = $tmp_raw[0];
|
||||
}
|
||||
if (!empty($tmp_raw['validate'])) {
|
||||
$tmpar = explode(";",$tmp_raw['validate']);
|
||||
$tmpar = explode(";", $tmp_raw['validate']);
|
||||
if ($tmpar[0] != 'yes') {
|
||||
$device_warning['Image'] = Array('Device firmware not found : '.$tmp_raw['loadimage']);
|
||||
$device_warning['Image'] = array('Device firmware not found : '.$tmp_raw['loadimage']);
|
||||
}
|
||||
if ($tmpar[1] != 'yes') {
|
||||
$device_warning['Template'] = Array('Missing device configuration template : '. $tmp_raw['nametemplate']);
|
||||
$device_warning['Template'] = array('Missing device configuration template : '. $tmp_raw['nametemplate']);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'name':
|
||||
$key = 'mac';
|
||||
$val = str_replace(array('SEP','ATA','VG'), '', $val);
|
||||
$val = implode('.',sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
|
||||
$val = implode('.', sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
|
||||
break;
|
||||
case '_hwlang':
|
||||
$tmpar = explode(":",$val);
|
||||
$tmpar = explode(":", $val);
|
||||
$def_val['netlang'] = array("keyword" => 'netlang', "data" => $tmpar[0], "seq" => "99");
|
||||
$def_val['devlang'] = array("keyword" => 'devlang', "data" => $tmpar[1], "seq" => "99");
|
||||
break;
|
||||
|
@ -79,14 +79,14 @@ if (!empty($device_warning)) {
|
|||
<h2 style="border:2px solid Tomato;color:Tomato;" >Warning in the SCCP Device</h2>
|
||||
<div class="table-responsive">
|
||||
<?php
|
||||
foreach ($device_warning as $key => $value) {
|
||||
echo '<h3>'.$key.'</h3>';
|
||||
if (is_array($value)) {
|
||||
echo '<li>'._(implode('</li><li>', $value)).'</li>';
|
||||
} else {
|
||||
echo '<li>'. _($value).'</li>';
|
||||
}
|
||||
foreach ($device_warning as $key => $value) {
|
||||
echo '<h3>'.$key.'</h3>';
|
||||
if (is_array($value)) {
|
||||
echo '<li>'._(implode('</li><li>', $value)).'</li>';
|
||||
} else {
|
||||
echo '<li>'. _($value).'</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</pre>
|
||||
</div>
|
||||
|
@ -104,12 +104,12 @@ if (!empty($device_warning)) {
|
|||
|
||||
|
||||
<?php
|
||||
if (empty($dev_new)){
|
||||
if (empty($dev_new)) {
|
||||
echo '<input type="hidden" name="sccp_deviceid" value="new">';
|
||||
} else {
|
||||
echo '<input type="hidden" name="sccp_deviceid" value="'.$dev_id.'">';
|
||||
}
|
||||
if (empty($dev_id)){
|
||||
if (empty($dev_id)) {
|
||||
echo $this->ShowGroup('sccp_hw_sip_dev', 1, 'sccp_hw', $def_val);
|
||||
} else {
|
||||
echo $this->ShowGroup('sccp_hw_dev_edit', 1, 'sccp_hw', $def_val);
|
||||
|
|
|
@ -21,7 +21,7 @@ $feature_list= array('parkinglot'=>'Park Slots','monitor'=> "Record Calls",'dev
|
|||
|
||||
$lines_list = $this->dbinterface->get_db_SccpTableData('SccpExtension');
|
||||
//$hint_list = $this->dbinterface->get_db_SccpTableData('SccpExtension');
|
||||
$hint_list = $this->get_hint_info(true,array('context'=>'park-hints')) ;
|
||||
$hint_list = $this->get_hint_info(true, array('context'=>'park-hints')) ;
|
||||
|
||||
// print_r($hint_list);
|
||||
$line_id =0;
|
||||
|
@ -33,7 +33,7 @@ if (!empty($_REQUEST['id'])) {
|
|||
$db_buttons = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_buttons', array("id" => $dev_id));
|
||||
$db_device = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_byid', array("id" => $dev_id));
|
||||
$max_buttons = $db_device['buttons'];
|
||||
if (!empty($db_device['addon_buttons'])){
|
||||
if (!empty($db_device['addon_buttons'])) {
|
||||
$max_buttons += $db_device['addon_buttons'];
|
||||
}
|
||||
$show_buttons = $max_buttons;
|
||||
|
@ -90,68 +90,68 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
|
||||
</div></div>
|
||||
<?php
|
||||
for ($line_id = 0; $line_id <=$max_buttons; $line_id ++){
|
||||
for ($line_id = 0; $line_id <=$max_buttons; $line_id ++) {
|
||||
// print_r($db_buttons[$line_id]);
|
||||
$show_form_mode = '';
|
||||
$defaul_tv = (empty($db_buttons[$line_id])) ? "empty": $db_buttons[$line_id]['buttontype'];
|
||||
$defaul_btn = (empty($db_buttons[$line_id])) ? "": $db_buttons[$line_id]['name'];
|
||||
$defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',',$db_buttons[$line_id]['options']);
|
||||
$show_form_mode = '';
|
||||
$defaul_tv = (empty($db_buttons[$line_id])) ? "empty": $db_buttons[$line_id]['buttontype'];
|
||||
$defaul_btn = (empty($db_buttons[$line_id])) ? "": $db_buttons[$line_id]['name'];
|
||||
$defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',', $db_buttons[$line_id]['options']);
|
||||
|
||||
$show_form_mode = $defaul_tv;
|
||||
$def_hint = ''; // Hint check Box
|
||||
$def_hint_btn = ''; // Hint Combo Box
|
||||
$def_park = ''; // Hint check Box
|
||||
$def_silent = '';
|
||||
$defaul_advline = '';
|
||||
$defaul_ftr = '';
|
||||
if (strpos($defaul_btn,'@') >0) {
|
||||
$defaul_tv = 'adv.line';
|
||||
$show_form_mode = 'adv.line';
|
||||
$defaul_btn = strtok($defaul_btn,'@');
|
||||
$defaul_advline = strtok('@');
|
||||
}
|
||||
if ($line_id == 0) {
|
||||
$show_form_mode = 'line';
|
||||
}
|
||||
if (stripos($defaul_btn,'!') >0) {
|
||||
$defaul_btn = strtok($defaul_btn,'!');
|
||||
$defaul_tv = 'silent';
|
||||
$def_silent = 'checked';
|
||||
}
|
||||
if ($defaul_tv == "feature") {
|
||||
$defaul_ftr = $defaul_opt[0];
|
||||
$defaul_fcod = (empty($defaul_opt[1])) ? '': $defaul_opt[1];
|
||||
$def_park = (empty($defaul_opt[2])) ? '': 'checked';
|
||||
$show_form_mode = $defaul_tv;
|
||||
$def_hint = ''; // Hint check Box
|
||||
$def_hint_btn = ''; // Hint Combo Box
|
||||
$def_park = ''; // Hint check Box
|
||||
$def_silent = '';
|
||||
$defaul_advline = '';
|
||||
$defaul_ftr = '';
|
||||
if (strpos($defaul_btn, '@') >0) {
|
||||
$defaul_tv = 'adv.line';
|
||||
$show_form_mode = 'adv.line';
|
||||
$defaul_btn = strtok($defaul_btn, '@');
|
||||
$defaul_advline = strtok('@');
|
||||
}
|
||||
if ($line_id == 0) {
|
||||
$show_form_mode = 'line';
|
||||
}
|
||||
if (stripos($defaul_btn, '!') >0) {
|
||||
$defaul_btn = strtok($defaul_btn, '!');
|
||||
$defaul_tv = 'silent';
|
||||
$def_silent = 'checked';
|
||||
}
|
||||
if ($defaul_tv == "feature") {
|
||||
$defaul_ftr = $defaul_opt[0];
|
||||
$defaul_fcod = (empty($defaul_opt[1])) ? '': $defaul_opt[1];
|
||||
$def_park = (empty($defaul_opt[2])) ? '': 'checked';
|
||||
// print_r($defaul_opt);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($defaul_opt as $data_i) {
|
||||
if (strpos($data_i,'@')>0) {
|
||||
$test_btn = strtok($data_i,'@');
|
||||
$def_hint = 'checked';
|
||||
$defaul_btn = $data_i;
|
||||
$def_hint_btn = $data_i;
|
||||
if ($test_btn == $defaul_opt[0]) {
|
||||
foreach ($lines_list as $data){
|
||||
if ($data['name']==$test_btn) {
|
||||
foreach ($defaul_opt as $data_i) {
|
||||
if (strpos($data_i, '@')>0) {
|
||||
$test_btn = strtok($data_i, '@');
|
||||
$def_hint = 'checked';
|
||||
$defaul_btn = $data_i;
|
||||
$def_hint_btn = $data_i;
|
||||
if ($test_btn == $defaul_opt[0]) {
|
||||
foreach ($lines_list as $data) {
|
||||
if ($data['name']==$test_btn) {
|
||||
$show_form_mode = 'line';
|
||||
$defaul_tv = 'monitor';
|
||||
$defaul_btn = $test_btn;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// print_r($def_hint_btn);
|
||||
// print_r($defaul_opt);
|
||||
|
||||
echo '<!-- Begin button :'.$line_id.' -->';
|
||||
echo '<div class="line_button element-container" '.(($line_id < $show_buttons)?"":"hidden ").'data-id="'.$line_id.'">';
|
||||
echo '<!-- Begin button :'.$line_id.' -->';
|
||||
echo '<div class="line_button element-container" '.(($line_id < $show_buttons)?"":"hidden ").'data-id="'.$line_id.'">';
|
||||
// echo 'Mode : '.$show_form_mode. ' opt: ';
|
||||
// print_r( $defaul_opt);
|
||||
|
||||
?>
|
||||
?>
|
||||
<div class="row"> <div class="form-group">
|
||||
<div class="col-sm-2">
|
||||
<label class="control-label" for="<?php echo $forminfo[1]['name'].$line_id; ?> "><?php echo _($forminfo[1]['label'].$line_id).(($line_id =="0")?' Default ':''); ?></label>
|
||||
|
@ -160,41 +160,41 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
<div class="col-xs-3">
|
||||
<!-- Line Type Select -->
|
||||
<select class="form-control buttontype" data-id="<?php echo $line_id;?>" name="<?php echo $forminfo[1]['name'].$line_id.'_type';?>" >
|
||||
<?php
|
||||
if ($line_id == 0) {
|
||||
echo '<option value="line" selected >DEF LINE</option>';
|
||||
}else {
|
||||
foreach ($buttons_type as $data){
|
||||
$select = (($data == $defaul_tv)?"selected":"");
|
||||
echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if ($line_id == 0) {
|
||||
echo '<option value="line" selected >DEF LINE</option>';
|
||||
} else {
|
||||
foreach ($buttons_type as $data) {
|
||||
$select = (($data == $defaul_tv)?"selected":"");
|
||||
echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</div>
|
||||
<!-- if Line Type = feature Show Futures -->
|
||||
<div class="col-xs-7">
|
||||
<select data-type="feature" class ="futuretype form-control lineid_<?php echo $line_id.(($show_form_mode=='feature')?'':' hidden');?>" data-id="<?php echo $line_id;?>" name="<?php echo $forminfo[1]['name'].$line_id.'_feature';?>" >
|
||||
<?php
|
||||
foreach ($feature_list as $fkey => $fval) {
|
||||
$select = (($fkey == $defaul_ftr)?"selected":"");
|
||||
echo '<option value="'.$fkey.'" '.$select.' >'.$fval.'</option>';
|
||||
}
|
||||
?>
|
||||
foreach ($feature_list as $fkey => $fval) {
|
||||
$select = (($fkey == $defaul_ftr)?"selected":"");
|
||||
echo '<option value="'.$fkey.'" '.$select.' >'.$fval.'</option>';
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<!-- if Line Type = line Show SCCP Num -->
|
||||
<select data-type='line' class ="form-control lineid_<?php echo $line_id.(($show_form_mode=='line' || $show_form_mode=='adv.line')?'':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_line';?>" >
|
||||
<?php
|
||||
foreach ($lines_list as $data){
|
||||
$select = (($data['name']==$defaul_btn)?"selected":"");
|
||||
echo '<option value="'.$data['name'].'" '.$select.' >'.$data['name'].' / '.$data['label'].'</option>';
|
||||
}
|
||||
?>
|
||||
foreach ($lines_list as $data) {
|
||||
$select = (($data['name']==$defaul_btn)?"selected":"");
|
||||
echo '<option value="'.$data['name'].'" '.$select.' >'.$data['name'].' / '.$data['label'].'</option>';
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<!-- if Line Type = Othe Show Input -->
|
||||
<div data-type='speeddial' class="lineid_<?php echo $line_id.(($show_form_mode=='speeddial')? '':' hidden');?>" >
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_input" name="'.$forminfo[1]['name'].$line_id.'_input" placeholder="Name" value="'.$db_buttons[$line_id]['name'].'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_input" name="'.$forminfo[1]['name'].$line_id.'_input" placeholder="Name" value="'.$db_buttons[$line_id]['name'].'" >';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -204,33 +204,33 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
<!-- if Line Type = speeddial Show Hint line -->
|
||||
<div data-type='hintline' class="lineid_<?php echo $line_id.(($show_form_mode=='speeddial')? '':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_hint';?>">
|
||||
<?php
|
||||
echo '<div class="col-xs-5">';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_phone" name="'.$forminfo[1]['name'].$line_id.'_phone" placeholder="Phone" value="'.$defaul_opt[0].'">';
|
||||
echo '</div><div class="col-xs-2 radioset" data-toggle="buttons">';
|
||||
echo '<input class="form-control" type="checkbox" name="'.$forminfo[1]['name'].$line_id.'_hint" id="'.$forminfo[1]['name'].$line_id.'_hint" '.$def_hint.' value= "hint">';
|
||||
echo '<label for="'.$forminfo[1]['name'].$line_id.'_hint">hints</label>';
|
||||
echo '</div><div class="col-xs-5">';
|
||||
echo '<div class="col-xs-5">';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_phone" name="'.$forminfo[1]['name'].$line_id.'_phone" placeholder="Phone" value="'.$defaul_opt[0].'">';
|
||||
echo '</div><div class="col-xs-2 radioset" data-toggle="buttons">';
|
||||
echo '<input class="form-control" type="checkbox" name="'.$forminfo[1]['name'].$line_id.'_hint" id="'.$forminfo[1]['name'].$line_id.'_hint" '.$def_hint.' value= "hint">';
|
||||
echo '<label for="'.$forminfo[1]['name'].$line_id.'_hint">hints</label>';
|
||||
echo '</div><div class="col-xs-5">';
|
||||
|
||||
echo '<select class="form-control" name="'.$forminfo[1]['name'].$line_id.'_hline" >';
|
||||
echo '<select class="form-control" name="'.$forminfo[1]['name'].$line_id.'_hline" >';
|
||||
|
||||
foreach ($hint_list as $data){
|
||||
$select = (($data['key']==$def_hint_btn)?"selected":"");
|
||||
echo '<option value="'.$data['key'].'" '.$select.' >'.$data['exten'].' / '.$data['label'].'</option>';
|
||||
}
|
||||
echo '</select>';
|
||||
echo '</div>';
|
||||
foreach ($hint_list as $data) {
|
||||
$select = (($data['key']==$def_hint_btn)?"selected":"");
|
||||
echo '<option value="'.$data['key'].'" '.$select.' >'.$data['exten'].' / '.$data['label'].'</option>';
|
||||
}
|
||||
echo '</select>';
|
||||
echo '</div>';
|
||||
?>
|
||||
</div>
|
||||
<!-- if Line Type = feature Show Futures Park -->
|
||||
<div data-type='feature' class="lineid_<?php echo $line_id.(($show_form_mode=='feature')? '':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_hint';?>">
|
||||
<div class="col-xs-4">
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_flabel" name="'.$forminfo[1]['name'].$line_id.'_flabel" placeholder="Display Label" value="'.$db_buttons[$line_id]['name'].'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_flabel" name="'.$forminfo[1]['name'].$line_id.'_flabel" placeholder="Display Label" value="'.$db_buttons[$line_id]['name'].'" >';
|
||||
?>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_fvalue" name="'.$forminfo[1]['name'].$line_id.'_fvalue" placeholder="code" value="'.$defaul_fcod.'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_fvalue" name="'.$forminfo[1]['name'].$line_id.'_fvalue" placeholder="code" value="'.$defaul_fcod.'" >';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -239,12 +239,12 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
<div data-type='adv_line' class="lineid_<?php echo $line_id.(($show_form_mode=='adv.line')? '':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_hint';?>">
|
||||
<div class="col-xs-5">
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_advline" name="'.$forminfo[1]['name'].$line_id.'_advline" placeholder="[+=][01]:[cidname]" value="'.$defaul_advline.'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_advline" name="'.$forminfo[1]['name'].$line_id.'_advline" placeholder="[+=][01]:[cidname]" value="'.$defaul_advline.'" >';
|
||||
?>
|
||||
</div>
|
||||
<div class="col-xs-5">
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_advopt" name="'.$forminfo[1]['name'].$line_id.'_advopt" placeholder="ButtonLabel,Options" value="'.$db_buttons[$line_id]['options'].'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_advopt" name="'.$forminfo[1]['name'].$line_id.'_advopt" placeholder="ButtonLabel,Options" value="'.$db_buttons[$line_id]['options'].'" >';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -252,10 +252,10 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
<div data-type='featurep' class="lineid_<?php echo $line_id.(($show_form_mode=='feature')? (($defaul_ftr=='parkinglot')? ' ':' hidden'):' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_park';?>">
|
||||
<div class="col-xs-4">
|
||||
<div class="radioset" data-toggle="buttons">
|
||||
<?php
|
||||
echo '<input class="form-control" type="checkbox" name="'.$forminfo[1]['name'].$line_id.'_retrieve" id="'.$forminfo[1]['name'].$line_id.'_retrieve" '.$def_park.' value="retrieve">';
|
||||
echo '<label for="'.$forminfo[1]['name'].$line_id.'_retrieve">RetrieveSingle</label>';
|
||||
?>
|
||||
<?php
|
||||
echo '<input class="form-control" type="checkbox" name="'.$forminfo[1]['name'].$line_id.'_retrieve" id="'.$forminfo[1]['name'].$line_id.'_retrieve" '.$def_park.' value="retrieve">';
|
||||
echo '<label for="'.$forminfo[1]['name'].$line_id.'_retrieve">RetrieveSingle</label>';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -264,9 +264,9 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
|
||||
</div></div>
|
||||
</div>
|
||||
<?php
|
||||
<?php
|
||||
echo '<!-- End button :'.$line_id.' -->';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
|
|
@ -37,12 +37,12 @@ if ($dev_id != '*new*') {
|
|||
|
||||
<form autocomplete="off" name="frm_editdialtemplate" id="frm_editbuttons" class="fpbx-submit" action="" method="post" data-id="dial_template">
|
||||
|
||||
<input type="hidden" name="idtemplate" value="<?php echo str_replace('dial','',$dev_id);?>">
|
||||
<input type="hidden" name="idtemplate" value="<?php echo str_replace('dial', '', $dev_id);?>">
|
||||
<input type="hidden" name="Submit" value="Submit">
|
||||
<?php
|
||||
if ($dev_id == '*new*') {
|
||||
echo $this->ShowGroup('sccp_dp_new_template',0,'sccp_dial',$def_val);
|
||||
}
|
||||
if ($dev_id == '*new*') {
|
||||
echo $this->ShowGroup('sccp_dp_new_template', 0, 'sccp_dial', $def_val);
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="panel panel-default">
|
||||
|
@ -75,6 +75,6 @@ if ($dev_id != '*new*') {
|
|||
|
||||
<?php
|
||||
// echo $this->ShowGroup('sccp_dp_new_template',0,'sccp_dial',$def_val);
|
||||
echo $this->ShowGroup('sccp_dp_template',0,'sccp_dial',$def_val);
|
||||
echo $this->ShowGroup('sccp_dp_template', 0, 'sccp_dial', $def_val);
|
||||
?>
|
||||
</form>
|
||||
|
|
|
@ -18,7 +18,7 @@ $feature_list= array('parkinglot'=>'Park Slots','monitor'=> "Record Calls",'dev
|
|||
//$lines_list = $this->dbinterface->get_db_SccpTableData('SccpExtension');
|
||||
$lines_list = $this->sipconfigs->get_db_sip_TableData('Device');
|
||||
//$hint_list = $this->dbinterface->get_db_SccpTableData('SccpExtension');
|
||||
$hint_list = $this->get_hint_info(true,array('context'=>'park-hints')) ;
|
||||
$hint_list = $this->get_hint_info(true, array('context'=>'park-hints')) ;
|
||||
|
||||
// print_r($lines_list);
|
||||
$line_id =0;
|
||||
|
@ -30,7 +30,7 @@ if (!empty($_REQUEST['id'])) {
|
|||
$db_buttons = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_buttons', array("id" => $dev_id));
|
||||
$db_device = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_byid', array("id" => $dev_id));
|
||||
$max_buttons = $db_device['buttons'];
|
||||
if (!empty($db_device['addon_buttons'])){
|
||||
if (!empty($db_device['addon_buttons'])) {
|
||||
$max_buttons += $db_device['addon_buttons'];
|
||||
}
|
||||
$show_buttons = $max_buttons;
|
||||
|
@ -87,65 +87,65 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
|
||||
</div></div>
|
||||
<?php
|
||||
for ($line_id = 0; $line_id <=$max_buttons; $line_id ++){
|
||||
for ($line_id = 0; $line_id <=$max_buttons; $line_id ++) {
|
||||
// print_r($db_buttons[$line_id]);
|
||||
$show_form_mode = '';
|
||||
$defaul_tv = (empty($db_buttons[$line_id])) ? "empty": $db_buttons[$line_id]['buttontype'];
|
||||
$defaul_btn = (empty($db_buttons[$line_id])) ? "": $db_buttons[$line_id]['name'];
|
||||
$defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',',$db_buttons[$line_id]['options']);
|
||||
$show_form_mode = '';
|
||||
$defaul_tv = (empty($db_buttons[$line_id])) ? "empty": $db_buttons[$line_id]['buttontype'];
|
||||
$defaul_btn = (empty($db_buttons[$line_id])) ? "": $db_buttons[$line_id]['name'];
|
||||
$defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',', $db_buttons[$line_id]['options']);
|
||||
|
||||
$show_form_mode = $defaul_tv;
|
||||
$def_hint = ''; // Hint check Box
|
||||
$def_hint_btn = ''; // Hint Combo Box
|
||||
$def_silent = '';
|
||||
$defaul_advline = '';
|
||||
if (strpos($defaul_btn,'@') >0) {
|
||||
$defaul_tv = 'adv.line';
|
||||
$show_form_mode = 'adv.line';
|
||||
$defaul_btn = strtok($defaul_btn,'@');
|
||||
$defaul_advline = strtok('@');
|
||||
}
|
||||
if ($line_id == 0) {
|
||||
$show_form_mode = 'line';
|
||||
}
|
||||
if (stripos($defaul_btn,'!') >0) {
|
||||
$defaul_btn = strtok($defaul_btn,'!');
|
||||
$defaul_tv = 'silent';
|
||||
$def_silent = 'checked';
|
||||
}
|
||||
if ($defaul_tv == "feature") {
|
||||
$defaul_ftr = $defaul_opt[0];
|
||||
$defaul_fcod = (empty($defaul_opt[1])) ? '': $defaul_opt[1];
|
||||
$show_form_mode = $defaul_tv;
|
||||
$def_hint = ''; // Hint check Box
|
||||
$def_hint_btn = ''; // Hint Combo Box
|
||||
$def_silent = '';
|
||||
$defaul_advline = '';
|
||||
if (strpos($defaul_btn, '@') >0) {
|
||||
$defaul_tv = 'adv.line';
|
||||
$show_form_mode = 'adv.line';
|
||||
$defaul_btn = strtok($defaul_btn, '@');
|
||||
$defaul_advline = strtok('@');
|
||||
}
|
||||
if ($line_id == 0) {
|
||||
$show_form_mode = 'line';
|
||||
}
|
||||
if (stripos($defaul_btn, '!') >0) {
|
||||
$defaul_btn = strtok($defaul_btn, '!');
|
||||
$defaul_tv = 'silent';
|
||||
$def_silent = 'checked';
|
||||
}
|
||||
if ($defaul_tv == "feature") {
|
||||
$defaul_ftr = $defaul_opt[0];
|
||||
$defaul_fcod = (empty($defaul_opt[1])) ? '': $defaul_opt[1];
|
||||
// print_r($defaul_fcod);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($defaul_opt as $data_i) {
|
||||
if (strpos($data_i,'@')>0) {
|
||||
$test_btn = strtok($data_i,'@');
|
||||
$def_hint = 'checked';
|
||||
$defaul_btn = $data_i;
|
||||
$def_hint_btn = $data_i;
|
||||
if ($test_btn == $defaul_opt[0]) {
|
||||
foreach ($lines_list as $data){
|
||||
if ($data['id']==$test_btn) {
|
||||
foreach ($defaul_opt as $data_i) {
|
||||
if (strpos($data_i, '@')>0) {
|
||||
$test_btn = strtok($data_i, '@');
|
||||
$def_hint = 'checked';
|
||||
$defaul_btn = $data_i;
|
||||
$def_hint_btn = $data_i;
|
||||
if ($test_btn == $defaul_opt[0]) {
|
||||
foreach ($lines_list as $data) {
|
||||
if ($data['id']==$test_btn) {
|
||||
$show_form_mode = 'line';
|
||||
$defaul_tv = 'monitor';
|
||||
$defaul_btn = $test_btn;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// print_r($def_hint_btn);
|
||||
// print_r($defaul_opt);
|
||||
|
||||
echo '<!-- Begin button :'.$line_id.' -->';
|
||||
echo '<div class="line_button element-container" '.(($line_id < $show_buttons)?"":"hidden ").'data-id="'.$line_id.'">';
|
||||
echo '<!-- Begin button :'.$line_id.' -->';
|
||||
echo '<div class="line_button element-container" '.(($line_id < $show_buttons)?"":"hidden ").'data-id="'.$line_id.'">';
|
||||
// echo 'Mode : '.$show_form_mode. ' opt: ';
|
||||
// print_r( $defaul_opt);
|
||||
|
||||
?>
|
||||
?>
|
||||
<div class="row"> <div class="form-group">
|
||||
<div class="col-sm-2">
|
||||
<label class="control-label" for="<?php echo $forminfo[1]['name'].$line_id; ?> "><?php echo _($forminfo[1]['label'].$line_id).(($line_id =="0")?' Default ':''); ?></label>
|
||||
|
@ -154,41 +154,41 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
<div class="col-xs-3">
|
||||
<!-- Line Type Select -->
|
||||
<select class="form-control buttontype" data-id="<?php echo $line_id;?>" name="<?php echo $forminfo[1]['name'].$line_id.'_type';?>" >
|
||||
<?php
|
||||
if ($line_id == 0) {
|
||||
echo '<option value="line" selected >DEF LINE</option>';
|
||||
}else {
|
||||
foreach ($buttons_type as $data){
|
||||
$select = (($data == $defaul_tv)?"selected":"");
|
||||
echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if ($line_id == 0) {
|
||||
echo '<option value="line" selected >DEF LINE</option>';
|
||||
} else {
|
||||
foreach ($buttons_type as $data) {
|
||||
$select = (($data == $defaul_tv)?"selected":"");
|
||||
echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</div>
|
||||
<!-- if Line Type = feature Show Futures -->
|
||||
<div class="col-xs-7">
|
||||
<select data-type="feature" class ="futuretype form-control lineid_<?php echo $line_id.(($show_form_mode=='feature')?'':' hidden');?>" data-id="<?php echo $line_id;?>" name="<?php echo $forminfo[1]['name'].$line_id.'_feature';?>" >
|
||||
<?php
|
||||
foreach ($feature_list as $fkey => $fval) {
|
||||
$select = (($fkey == $defaul_ftr)?"selected":"");
|
||||
echo '<option value="'.$fkey.'" '.$select.' >'.$fval.'</option>';
|
||||
}
|
||||
?>
|
||||
foreach ($feature_list as $fkey => $fval) {
|
||||
$select = (($fkey == $defaul_ftr)?"selected":"");
|
||||
echo '<option value="'.$fkey.'" '.$select.' >'.$fval.'</option>';
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<!-- if Line Type = line Show SCCP Num -->
|
||||
<select data-type='line' class ="form-control lineid_<?php echo $line_id.(($show_form_mode=='line' || $show_form_mode=='adv.line')?'':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_line';?>" >
|
||||
<?php
|
||||
foreach ($lines_list as $data){
|
||||
$select = (($data['id']==$defaul_btn)?"selected":"");
|
||||
echo '<option value="'.$data['id'].'" '.$select.' >'.$data['id'].' / '.$data['callerid'].'</option>';
|
||||
}
|
||||
?>
|
||||
foreach ($lines_list as $data) {
|
||||
$select = (($data['id']==$defaul_btn)?"selected":"");
|
||||
echo '<option value="'.$data['id'].'" '.$select.' >'.$data['id'].' / '.$data['callerid'].'</option>';
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<!-- if Line Type = Othe Show Input -->
|
||||
<div data-type='speeddial' class="lineid_<?php echo $line_id.(($show_form_mode=='speeddial')? '':' hidden');?>" >
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_input" name="'.$forminfo[1]['name'].$line_id.'_input" placeholder="Name" value="'.$db_buttons[$line_id]['name'].'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_input" name="'.$forminfo[1]['name'].$line_id.'_input" placeholder="Name" value="'.$db_buttons[$line_id]['name'].'" >';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -198,33 +198,33 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
<!-- if Line Type = speeddial Show Hint line -->
|
||||
<div data-type='hintline' class="lineid_<?php echo $line_id.(($show_form_mode=='speeddial')? '':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_hint';?>">
|
||||
<?php
|
||||
echo '<div class="col-xs-5">';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_phone" name="'.$forminfo[1]['name'].$line_id.'_phone" placeholder="Phone" value="'.$defaul_opt[0].'">';
|
||||
echo '</div><div class="col-xs-2 radioset" data-toggle="buttons">';
|
||||
echo '<input class="form-control" type="checkbox" name="'.$forminfo[1]['name'].$line_id.'_hint" id="'.$forminfo[1]['name'].$line_id.'_hint" '.$def_hint.' value= "hint">';
|
||||
echo '<label for="'.$forminfo[1]['name'].$line_id.'_hint">hints</label>';
|
||||
echo '</div><div class="col-xs-5">';
|
||||
echo '<div class="col-xs-5">';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_phone" name="'.$forminfo[1]['name'].$line_id.'_phone" placeholder="Phone" value="'.$defaul_opt[0].'">';
|
||||
echo '</div><div class="col-xs-2 radioset" data-toggle="buttons">';
|
||||
echo '<input class="form-control" type="checkbox" name="'.$forminfo[1]['name'].$line_id.'_hint" id="'.$forminfo[1]['name'].$line_id.'_hint" '.$def_hint.' value= "hint">';
|
||||
echo '<label for="'.$forminfo[1]['name'].$line_id.'_hint">hints</label>';
|
||||
echo '</div><div class="col-xs-5">';
|
||||
|
||||
echo '<select class="form-control" name="'.$forminfo[1]['name'].$line_id.'_hline" >';
|
||||
echo '<select class="form-control" name="'.$forminfo[1]['name'].$line_id.'_hline" >';
|
||||
|
||||
foreach ($hint_list as $data){
|
||||
$select = (($data['key']==$def_hint_btn)?"selected":"");
|
||||
echo '<option value="'.$data['key'].'" '.$select.' >'.$data['exten'].' / '.$data['label'].'</option>';
|
||||
}
|
||||
echo '</select>';
|
||||
echo '</div>';
|
||||
foreach ($hint_list as $data) {
|
||||
$select = (($data['key']==$def_hint_btn)?"selected":"");
|
||||
echo '<option value="'.$data['key'].'" '.$select.' >'.$data['exten'].' / '.$data['label'].'</option>';
|
||||
}
|
||||
echo '</select>';
|
||||
echo '</div>';
|
||||
?>
|
||||
</div>
|
||||
<!-- if Line Type = feature Show Futures Park -->
|
||||
<div data-type='feature' class="lineid_<?php echo $line_id.(($show_form_mode=='feature')? '':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_hint';?>">
|
||||
<div class="col-xs-5">
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_flabel" name="'.$forminfo[1]['name'].$line_id.'_flabel" placeholder="Display Label" value="'.$db_buttons[$line_id]['name'].'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_flabel" name="'.$forminfo[1]['name'].$line_id.'_flabel" placeholder="Display Label" value="'.$db_buttons[$line_id]['name'].'" >';
|
||||
?>
|
||||
</div>
|
||||
<div class="col-xs-5">
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_fvalue" name="'.$forminfo[1]['name'].$line_id.'_fvalue" placeholder="code" value="'.$defaul_fcod.'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_fvalue" name="'.$forminfo[1]['name'].$line_id.'_fvalue" placeholder="code" value="'.$defaul_fcod.'" >';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -233,12 +233,12 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
<div data-type='adv_line' class="lineid_<?php echo $line_id.(($show_form_mode=='adv.line')? '':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_hint';?>">
|
||||
<div class="col-xs-5">
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_advline" name="'.$forminfo[1]['name'].$line_id.'_advline" placeholder="[+=][01]:[cidname]" value="'.$defaul_advline.'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_advline" name="'.$forminfo[1]['name'].$line_id.'_advline" placeholder="[+=][01]:[cidname]" value="'.$defaul_advline.'" >';
|
||||
?>
|
||||
</div>
|
||||
<div class="col-xs-5">
|
||||
<?php
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_advopt" name="'.$forminfo[1]['name'].$line_id.'_advopt" placeholder="ButtonLabel,Options" value="'.$db_buttons[$line_id]['options'].'" >';
|
||||
echo '<input class="form-control" type="text" id="'.$forminfo[1]['name'].$line_id.'_advopt" name="'.$forminfo[1]['name'].$line_id.'_advopt" placeholder="ButtonLabel,Options" value="'.$db_buttons[$line_id]['options'].'" >';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -247,9 +247,9 @@ if (!empty($_REQUEST['ru_id'])) {
|
|||
|
||||
</div></div>
|
||||
</div>
|
||||
<?php
|
||||
<?php
|
||||
echo '<!-- End button :'.$line_id.' -->';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
$npref = $form_prefix.'_';
|
||||
$napref = $form_prefix.'-ar_';
|
||||
if (empty($form_prefix)){
|
||||
if (empty($form_prefix)) {
|
||||
$npref = "sccp_";
|
||||
$napref ="sccp-ar_";
|
||||
}
|
||||
|
@ -60,11 +60,11 @@ if (\FreePBX::Modules()->checkStatus("soundlang")) {
|
|||
$syslangs = array();
|
||||
}
|
||||
}
|
||||
if (function_exists('music_list')){
|
||||
if (function_exists('music_list')) {
|
||||
$moh_list = music_list();
|
||||
// $cur = (isset($mohsilence) && $mohsilence != "" ? $mohsilence : 'default');
|
||||
}
|
||||
if (!is_array($moh_list)){
|
||||
if (!is_array($moh_list)) {
|
||||
$moh_list = array('default');
|
||||
}
|
||||
|
||||
|
@ -73,18 +73,18 @@ if (!is_array($moh_list)){
|
|||
$items = $itm -> children();
|
||||
|
||||
if ($h_show==1) {
|
||||
$sec_class ='';
|
||||
if (!empty($items ->class)){
|
||||
$sec_class = (string)$items ->class;
|
||||
}
|
||||
?>
|
||||
$sec_class ='';
|
||||
if (!empty($items ->class)) {
|
||||
$sec_class = (string)$items ->class;
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="section-title" data-for="<?php echo $npref.$itm['name'];?>">
|
||||
<h3><i class="fa fa-minus"></i><?php echo _($items ->label) ?></h3>
|
||||
</div>
|
||||
<div class="section <?php echo $sec_class;?>" data-id="<?php echo $npref.$itm['name'];?>">
|
||||
|
||||
<?php
|
||||
<?php
|
||||
}
|
||||
foreach ($items as $child) {
|
||||
if (empty($child->help)) {
|
||||
|
@ -98,7 +98,7 @@ foreach ($items as $child) {
|
|||
$res_name = '';
|
||||
$res_oid = (string)$child->input[0]->name;
|
||||
$res_id = $npref.$res_oid;
|
||||
if (!empty($metainfo[$res_oid])){
|
||||
if (!empty($metainfo[$res_oid])) {
|
||||
if ($child->meta_help == '1' || $child->help == 'Help!') {
|
||||
$child->help = $metainfo[$res_oid]['Description'];
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ foreach ($items as $child) {
|
|||
|
||||
// --- Add Hiden option
|
||||
$res_sec_class ='';
|
||||
if (!empty($child ->class)){
|
||||
if (!empty($child ->class)) {
|
||||
$res_sec_class = (string)$child ->class;
|
||||
}
|
||||
|
||||
|
@ -130,38 +130,43 @@ foreach ($items as $child) {
|
|||
foreach ($child->xpath('input') as $value) {
|
||||
$res_n = (string)$value->name;
|
||||
$res_name = $npref . $res_n;
|
||||
if (empty($res_id)) {
|
||||
$res_id = $res_name;
|
||||
}
|
||||
if (empty($res_id)) {
|
||||
$res_id = $res_name;
|
||||
}
|
||||
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (!empty($fvalues[$res_n]['data'])) {
|
||||
$value->value = $fvalues[$res_n]['data'];
|
||||
}
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (!empty($fvalues[$res_n]['data'])) {
|
||||
$value->value = $fvalues[$res_n]['data'];
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($value->value)) {
|
||||
$value->value = $value->default;
|
||||
}
|
||||
if (empty($value->type)) {
|
||||
$value->type = 'text';
|
||||
}
|
||||
if (empty($value->class)) {
|
||||
$value->class = 'form-control';
|
||||
}
|
||||
if ($i > 0) echo $child->nameseparator;
|
||||
if (empty($value->value)) {
|
||||
$value->value = $value->default;
|
||||
}
|
||||
if (empty($value->type)) {
|
||||
$value->type = 'text';
|
||||
}
|
||||
if (empty($value->class)) {
|
||||
$value->class = 'form-control';
|
||||
}
|
||||
if ($i > 0) {
|
||||
echo $child->nameseparator;
|
||||
}
|
||||
//
|
||||
echo '<input type="' . $value->type . '" class="' . $value->class . '" id="' . $res_id . '" name="' . $res_name . '" value="' . $value->value.'"';
|
||||
if (isset($value->options)){
|
||||
foreach ($value->options ->attributes() as $optkey =>$optval){
|
||||
if (isset($value->options)) {
|
||||
foreach ($value->options ->attributes() as $optkey => $optval) {
|
||||
echo ' '.$optkey.'="'.$optval.'"';
|
||||
}
|
||||
}
|
||||
if (!empty($value->min)) echo ' min="'.$value->min.'"';
|
||||
if (!empty($value->max)) echo ' max="'.$value->max.'"';
|
||||
if (!empty($value->min)) {
|
||||
echo ' min="'.$value->min.'"';
|
||||
}
|
||||
if (!empty($value->max)) {
|
||||
echo ' max="'.$value->max.'"';
|
||||
}
|
||||
echo '>';
|
||||
$i ++;
|
||||
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
@ -173,7 +178,6 @@ foreach ($items as $child) {
|
|||
|
||||
<?php
|
||||
echo '<!-- END '.$child->label.' -->';
|
||||
|
||||
}
|
||||
if ($child['type'] == 'IED') {
|
||||
$res_input = '';
|
||||
|
@ -182,7 +186,7 @@ foreach ($items as $child) {
|
|||
$opt_at = array();
|
||||
$res_n = (string)$child->name;
|
||||
|
||||
if (!empty($metainfo[$res_n])){
|
||||
if (!empty($metainfo[$res_n])) {
|
||||
if ($child->meta_help == '1' || $child->help == 'Help!') {
|
||||
$child->help = $metainfo[$res_n]['Description'];
|
||||
}
|
||||
|
@ -208,7 +212,7 @@ foreach ($items as $child) {
|
|||
|
||||
echo '<!-- Begin '.$child->label.' -->';
|
||||
?>
|
||||
<div class="element-container">
|
||||
<div class="element-container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="row">
|
||||
|
@ -225,10 +229,10 @@ foreach ($items as $child) {
|
|||
foreach ($child->xpath('cbutton') as $value) {
|
||||
$res_n = $res_id.'[0]['.$value['field'].']';
|
||||
$res_vf = '';
|
||||
if ($value['value']=='NONE' && empty($res_value)){
|
||||
if ($value['value']=='NONE' && empty($res_value)) {
|
||||
$res_vf = 'active';
|
||||
}
|
||||
$ch_key = array_search($value['value'],$res_value);
|
||||
$ch_key = array_search($value['value'], $res_value);
|
||||
if ($ch_key !== false) {
|
||||
unset($res_value[$ch_key]);
|
||||
$res_vf = 'active';
|
||||
|
@ -269,46 +273,45 @@ foreach ($items as $child) {
|
|||
echo '<div class = "'.$opt_class.'">';
|
||||
|
||||
foreach ($res_value as $dat_v) {
|
||||
?>
|
||||
?>
|
||||
<div class = "<?php echo $res_id;?> form-group form-inline" data-nextid=<?php echo $i+1;?> >
|
||||
<?php
|
||||
$res_vf = explode('/', $dat_v);
|
||||
$i2 = 0;
|
||||
foreach ($child->xpath('input') as $value) {
|
||||
$res_n = $res_id.'['.$i.']['.$value['field'].']';
|
||||
$fields_id = (string)$value['field'];
|
||||
$opt_at[$fields_id]['nameseparator']=(string)$value['nameseparator'];
|
||||
if (!empty($value->class)) {
|
||||
$opt_at[$fields_id]['class']='form-control ' .(string)$value->class;
|
||||
}
|
||||
$opt_at[$fields_id]['nameseparator']=(string)$value['nameseparator'];
|
||||
|
||||
echo '<input type="text" name="'. $res_n.'" class="'.$opt_at[$fields_id]['class'].'" value="'.$res_vf[$i2].'"';
|
||||
if (isset($value->options)){
|
||||
foreach ($value->options ->attributes() as $optkey =>$optval){
|
||||
$opt_at[$fields_id]['options'][$optkey]=(string)$optval;
|
||||
echo ' '.$optkey.'="'.$optval.'"';
|
||||
<?php
|
||||
$res_vf = explode('/', $dat_v);
|
||||
$i2 = 0;
|
||||
foreach ($child->xpath('input') as $value) {
|
||||
$res_n = $res_id.'['.$i.']['.$value['field'].']';
|
||||
$fields_id = (string)$value['field'];
|
||||
$opt_at[$fields_id]['nameseparator']=(string)$value['nameseparator'];
|
||||
if (!empty($value->class)) {
|
||||
$opt_at[$fields_id]['class']='form-control ' .(string)$value->class;
|
||||
}
|
||||
}
|
||||
echo '> '.(string)$value['nameseparator'].' ';
|
||||
$i2 ++;
|
||||
$opt_at[$fields_id]['nameseparator']=(string)$value['nameseparator'];
|
||||
|
||||
}
|
||||
if (!empty($child->add_pluss)) {
|
||||
echo '<button type="button" class="btn btn-primary btn-lg input-js-add" id="'.$res_id.'-btn" data-id="'.$res_id.'" data-for="'.$res_id.'" data-max="'.$max_row.'"data-json="'.bin2hex(json_encode($opt_at)).'"><i class="fa fa-plus pull-right"></i></button>';
|
||||
}
|
||||
echo '</div>';
|
||||
$i++;
|
||||
echo '<input type="text" name="'. $res_n.'" class="'.$opt_at[$fields_id]['class'].'" value="'.$res_vf[$i2].'"';
|
||||
if (isset($value->options)) {
|
||||
foreach ($value->options ->attributes() as $optkey => $optval) {
|
||||
$opt_at[$fields_id]['options'][$optkey]=(string)$optval;
|
||||
echo ' '.$optkey.'="'.$optval.'"';
|
||||
}
|
||||
}
|
||||
echo '> '.(string)$value['nameseparator'].' ';
|
||||
$i2 ++;
|
||||
}
|
||||
if (!empty($child->add_pluss)) {
|
||||
echo '<button type="button" class="btn btn-primary btn-lg input-js-add" id="'.$res_id.'-btn" data-id="'.$res_id.'" data-for="'.$res_id.'" data-max="'.$max_row.'"data-json="'.bin2hex(json_encode($opt_at)).'"><i class="fa fa-plus pull-right"></i></button>';
|
||||
}
|
||||
echo '</div>';
|
||||
$i++;
|
||||
}
|
||||
?>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
if (!empty($child->addbutton)) {
|
||||
echo '<div class = "col-sm-5 '.$res_id.'-gr">';
|
||||
echo '<input type="button" id="'.$res_id.'-btn" data-id="'.$res_id.'" data-for="'.$res_id.'" data-max="'.$max_row.'"data-json="'.bin2hex(json_encode($opt_at)).'" class="input-js-add" value="'._($child->addbutton).'" />';
|
||||
echo '</div>';
|
||||
}
|
||||
if (!empty($child->addbutton)) {
|
||||
echo '<div class = "col-sm-5 '.$res_id.'-gr">';
|
||||
echo '<input type="button" id="'.$res_id.'-btn" data-id="'.$res_id.'" data-for="'.$res_id.'" data-max="'.$max_row.'"data-json="'.bin2hex(json_encode($opt_at)).'" class="input-js-add" value="'._($child->addbutton).'" />';
|
||||
echo '</div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -318,16 +321,15 @@ foreach ($items as $child) {
|
|||
<div class="row"><div class="col-md-12">
|
||||
<span id="<?php echo $res_id;?>-help" class="help-block fpbx-help-block"><?php echo _($child->help);?></span>
|
||||
</div></div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
echo '<!-- END '.$child->label.' -->';
|
||||
|
||||
}
|
||||
|
||||
if ($child['type'] == 'IS') {
|
||||
$res_n = (string)$child->name;
|
||||
$res_id = $npref.$child->name;
|
||||
if (!empty($metainfo[$res_n])){
|
||||
if (!empty($metainfo[$res_n])) {
|
||||
if ($child->meta_help == '1' || $child->help == 'Help!') {
|
||||
$child->help = $metainfo[$res_n]['Description'];
|
||||
}
|
||||
|
@ -335,7 +337,7 @@ foreach ($items as $child) {
|
|||
|
||||
// --- Add Hiden option
|
||||
$res_sec_class ='';
|
||||
if (!empty($child ->class)){
|
||||
if (!empty($child ->class)) {
|
||||
$res_sec_class = (string)$child ->class;
|
||||
}
|
||||
|
||||
|
@ -352,31 +354,31 @@ foreach ($items as $child) {
|
|||
$i = 0;
|
||||
// $res_v = 'no';
|
||||
$opt_hide = '';
|
||||
if (empty($child->default)) {
|
||||
$res_v = 'no';
|
||||
} else {
|
||||
$res_v = (string)$child->default;
|
||||
}
|
||||
if (!empty($child->value)) {
|
||||
$res_v = (string)$child->value;
|
||||
}
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (empty($child->default)) {
|
||||
$res_v = 'no';
|
||||
} else {
|
||||
$res_v = (string)$child->default;
|
||||
}
|
||||
if (!empty($child->value)) {
|
||||
$res_v = (string)$child->value;
|
||||
}
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (!empty($fvalues[$res_n]['data'])) {
|
||||
$res_v = (string)$fvalues[$res_n]['data'];
|
||||
}
|
||||
}
|
||||
if (!empty($child->option_hide)) {
|
||||
}
|
||||
if (!empty($child->option_hide)) {
|
||||
$opt_hide = ' class="sccp_button_hide" data-vhide="'.$child->option_hide.'" data-clhide="'.$child->option_hide['class'].'" ';
|
||||
}
|
||||
if (!empty($child->option_show)) {
|
||||
}
|
||||
if (!empty($child->option_show)) {
|
||||
if (empty($opt_hide)) {
|
||||
$opt_hide =' class="sccp_button_hide" ';
|
||||
}
|
||||
$opt_hide .= ' data-vshow="'.$child->option_show.'" data-clshow="'.$child->option_show['class'].'" ';
|
||||
}
|
||||
foreach ($child->xpath('button') as $value) {
|
||||
}
|
||||
foreach ($child->xpath('button') as $value) {
|
||||
$val_check = (string)$value[@value];
|
||||
if ($val_check == '' || $val_check == 'NONE' || $val_check == 'none' ) {
|
||||
if ($val_check == '' || $val_check == 'NONE' || $val_check == 'none') {
|
||||
$val_check = (((string)$value[@value] == $res_v) ? " checked" : "");
|
||||
} else {
|
||||
$val_check = (strtolower((string)$value[@value]) == strtolower($res_v) ? " checked" : "");
|
||||
|
@ -384,7 +386,7 @@ foreach ($items as $child) {
|
|||
echo '<input type="radio" name="' . $res_id . '" id="' . $res_id. '_' . $i .'" value="' . $value[@value] . '"' . $val_check . $opt_hide.'>';
|
||||
echo '<label for="' . $res_id. '_' . $i . '">' . _($value) . '</label>';
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div></div>
|
||||
|
@ -395,7 +397,6 @@ foreach ($items as $child) {
|
|||
|
||||
<?php
|
||||
echo '<!-- END '.$child->label.' -->';
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -407,18 +408,18 @@ foreach ($items as $child) {
|
|||
* SLP - Dial Paterns
|
||||
*/
|
||||
|
||||
if ($child['type'] == 'SLD' || $child['type'] == 'SLM'|| $child['type'] == 'SLK'|| $child['type'] == 'SLP' ) {
|
||||
if ($child['type'] == 'SLD' || $child['type'] == 'SLM'|| $child['type'] == 'SLK'|| $child['type'] == 'SLP') {
|
||||
// $value = $child -> select;
|
||||
$res_n = (string)$child ->name;
|
||||
$res_id = $npref.$res_n;
|
||||
if (!empty($metainfo[$res_n])){
|
||||
if (!empty($metainfo[$res_n])) {
|
||||
if ($child->meta_help == '1' || $child->help == 'Help!') {
|
||||
$child->help = $metainfo[$res_n]['Description'];
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($child->class)) {
|
||||
$child->class = 'form-control';
|
||||
$child->class = 'form-control';
|
||||
}
|
||||
|
||||
if ($child['type'] == 'SLD') {
|
||||
|
@ -437,8 +438,8 @@ foreach ($items as $child) {
|
|||
if ($child['type'] == 'SLP') {
|
||||
if (empty($dialplan_list)) {
|
||||
foreach (\FreePBX::Sccp_manager()->get_DialPlanList() as $tmpkey) {
|
||||
$tmp_id = $tmpkey['id'];
|
||||
$dialplan_list[$tmp_id] = $tmp_id;
|
||||
$tmp_id = $tmpkey['id'];
|
||||
$dialplan_list[$tmp_id] = $tmp_id;
|
||||
}
|
||||
}
|
||||
$select_opt= $dialplan_list;
|
||||
|
@ -459,19 +460,19 @@ foreach ($items as $child) {
|
|||
</div>
|
||||
<div class="col-md-9"><div class = "lnet form-group form-inline" data-nextid=1> <?php
|
||||
echo '<select name="'.$res_id.'" class="'. $child->class . '" id="' . $res_id . '">';
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (!empty($fvalues[$res_n]['data'])) {
|
||||
$child->value = $fvalues[$res_n]['data'];
|
||||
}
|
||||
}
|
||||
foreach ($select_opt as $key) {
|
||||
echo '<option value="' . $key . '"';
|
||||
if ($key == $child->value) {
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
echo '>' . $key . '</option>';
|
||||
}
|
||||
?> </select>
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (!empty($fvalues[$res_n]['data'])) {
|
||||
$child->value = $fvalues[$res_n]['data'];
|
||||
}
|
||||
}
|
||||
foreach ($select_opt as $key) {
|
||||
echo '<option value="' . $key . '"';
|
||||
if ($key == $child->value) {
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
echo '>' . $key . '</option>';
|
||||
}
|
||||
?> </select>
|
||||
</div></div>
|
||||
</div></div>
|
||||
<div class="row"><div class="col-md-12">
|
||||
|
@ -480,7 +481,6 @@ foreach ($items as $child) {
|
|||
</div>
|
||||
<?php
|
||||
echo '<!-- END '.$child->label.' -->';
|
||||
|
||||
}
|
||||
/*
|
||||
* Input element Select SLS - System Language
|
||||
|
@ -492,7 +492,7 @@ foreach ($items as $child) {
|
|||
$res_id = $npref.$res_n;
|
||||
$child->value ='';
|
||||
|
||||
if (!empty($metainfo[$res_n])){
|
||||
if (!empty($metainfo[$res_n])) {
|
||||
if ($child->meta_help == '1' || $child->help == 'Help!') {
|
||||
$child->help = $metainfo[$res_n]['Description'];
|
||||
}
|
||||
|
@ -525,7 +525,7 @@ foreach ($items as $child) {
|
|||
}
|
||||
|
||||
if (empty($child->class)) {
|
||||
$child->class = 'form-control';
|
||||
$child->class = 'form-control';
|
||||
}
|
||||
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
|
@ -534,8 +534,8 @@ foreach ($items as $child) {
|
|||
}
|
||||
}
|
||||
|
||||
if (empty($child->value)){
|
||||
if (!empty($child->default)){
|
||||
if (empty($child->value)) {
|
||||
if (!empty($child->default)) {
|
||||
$child->value = $child->default;
|
||||
}
|
||||
}
|
||||
|
@ -551,21 +551,21 @@ foreach ($items as $child) {
|
|||
</div>
|
||||
<div class="col-md-9"> <!-- <div class = "lnet form-group form-inline" data-nextid=1> --> <?php
|
||||
echo '<select name="'.$res_id.'" class="'. $child->class . '" id="' . $res_id . '">';
|
||||
foreach ($select_opt as $key => $val) {
|
||||
if (is_array($val)) {
|
||||
$opt_key = (isset($val['id'])) ? $val['id'] : $key;
|
||||
$opt_val = (isset($val['val'])) ? $val['val'] : $val;
|
||||
} else {
|
||||
$opt_key = $key;
|
||||
$opt_val = $val;
|
||||
}
|
||||
echo '<option value="' . $opt_key . '"';
|
||||
if ($opt_key == $child->value) {
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
echo '>' . $opt_val. '</option>';
|
||||
}
|
||||
?> </select>
|
||||
foreach ($select_opt as $key => $val) {
|
||||
if (is_array($val)) {
|
||||
$opt_key = (isset($val['id'])) ? $val['id'] : $key;
|
||||
$opt_val = (isset($val['val'])) ? $val['val'] : $val;
|
||||
} else {
|
||||
$opt_key = $key;
|
||||
$opt_val = $val;
|
||||
}
|
||||
echo '<option value="' . $opt_key . '"';
|
||||
if ($opt_key == $child->value) {
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
echo '>' . $opt_val. '</option>';
|
||||
}
|
||||
?> </select>
|
||||
<!-- </div> --> </div>
|
||||
</div></div>
|
||||
<div class="row"><div class="col-md-12">
|
||||
|
@ -575,7 +575,6 @@ foreach ($items as $child) {
|
|||
<!--END System Language-->
|
||||
<?php
|
||||
echo '<!-- END '.$child->label.' -->';
|
||||
|
||||
}
|
||||
/*
|
||||
* Input element Select
|
||||
|
@ -585,14 +584,14 @@ foreach ($items as $child) {
|
|||
$res_n = (string)$child->name;
|
||||
$res_id = $npref.$child->name;
|
||||
|
||||
if (!empty($metainfo[$res_n])){
|
||||
if (!empty($metainfo[$res_n])) {
|
||||
if ($child->meta_help == '1' || $child->help == 'Help!') {
|
||||
$child->help = $metainfo[$res_n]['Description'];
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($child ->class)) {
|
||||
$child->class = 'form-control';
|
||||
$child->class = 'form-control';
|
||||
}
|
||||
echo '<!-- Begin '.$child->label.' -->';
|
||||
|
||||
|
@ -606,24 +605,24 @@ foreach ($items as $child) {
|
|||
</div>
|
||||
<div class="col-md-9"> <div class = "lnet form-group form-inline" data-nextid=1> <?php
|
||||
echo '<select name="'.$res_id.'" class="'. $child->class . '" id="' . $res_id . '">';
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (!empty($fvalues[$res_n]['data'])) {
|
||||
$child->value = $fvalues[$res_n]['data'];
|
||||
}
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (!empty($fvalues[$res_n]['data'])) {
|
||||
$child->value = $fvalues[$res_n]['data'];
|
||||
}
|
||||
foreach ($child->xpath('select') as $value) {
|
||||
if (!empty($value[@value])) {
|
||||
}
|
||||
foreach ($child->xpath('select') as $value) {
|
||||
if (!empty($value[@value])) {
|
||||
$key = $value[@value];
|
||||
} else {
|
||||
$key = (string)$value;
|
||||
}
|
||||
echo '<option value="' . $key . '"';
|
||||
if (strtolower((string)$key) == strtolower((string)$child->value)) {
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
echo '>' . (string)$value. '</option>';
|
||||
} else {
|
||||
$key = (string)$value;
|
||||
}
|
||||
?> </select>
|
||||
echo '<option value="' . $key . '"';
|
||||
if (strtolower((string)$key) == strtolower((string)$child->value)) {
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
echo '>' . (string)$value. '</option>';
|
||||
}
|
||||
?> </select>
|
||||
|
||||
</div> </div>
|
||||
</div></div>
|
||||
|
@ -646,14 +645,14 @@ foreach ($items as $child) {
|
|||
$res_n = (string)$child ->name;
|
||||
$res_id = $npref.$res_n;
|
||||
|
||||
if (!empty($metainfo[$res_n])){
|
||||
if (!empty($metainfo[$res_n])) {
|
||||
if ($child->meta_help == '1' || $child->help == 'Help!') {
|
||||
$child->help = $metainfo[$res_n]['Description'];
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($child->class)) {
|
||||
$child->class = 'form-control';
|
||||
$child->class = 'form-control';
|
||||
}
|
||||
if ($child['type'] == 'SDM') {
|
||||
if (empty($model_list)) {
|
||||
|
@ -663,7 +662,7 @@ foreach ($items as $child) {
|
|||
}
|
||||
if ($child['type'] == 'SDMS') {
|
||||
if (empty($model_list)) {
|
||||
$model_list = \FreePBX::Sccp_manager()->dbinterface->get_db_SccpTableData("HWSipDevice");
|
||||
$model_list = \FreePBX::Sccp_manager()->dbinterface->get_db_SccpTableData("HWSipDevice");
|
||||
}
|
||||
$select_opt= $model_list;
|
||||
}
|
||||
|
@ -694,11 +693,11 @@ foreach ($items as $child) {
|
|||
</div>
|
||||
<div class="col-md-9"><div class = "lnet form-group form-inline" data-nextid=1> <?php
|
||||
echo '<select name="'.$res_id.'" class="'. $child->class . '" id="' . $res_id . '"';
|
||||
if (isset($child->options)){
|
||||
foreach ($child->options->attributes() as $optkey =>$optval){
|
||||
echo ' '.$optkey.'="'.$optval.'"';
|
||||
}
|
||||
}
|
||||
if (isset($child->options)) {
|
||||
foreach ($child->options->attributes() as $optkey => $optval) {
|
||||
echo ' '.$optkey.'="'.$optval.'"';
|
||||
}
|
||||
}
|
||||
echo '>';
|
||||
|
||||
$fld = (string)$child->select['name'];
|
||||
|
@ -707,32 +706,32 @@ foreach ($items as $child) {
|
|||
$flk = (string)$child->select['dataid'];
|
||||
$flkv = (string)$child->select['dataval'];
|
||||
$key = (string)$child->default;
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (!empty($fvalues[$res_n]['data'])) {
|
||||
$child->value = $fvalues[$res_n]['data'];
|
||||
$key = $fvalues[$res_n]['data'];
|
||||
}
|
||||
}
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
if (!empty($fvalues[$res_n]['data'])) {
|
||||
$child->value = $fvalues[$res_n]['data'];
|
||||
$key = $fvalues[$res_n]['data'];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($select_opt as $data) {
|
||||
echo '<option value="' . $data[$fld] . '"';
|
||||
if ($key == $data[$fld]) {
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
if (!empty($flk)){
|
||||
echo ' data-id="'.$data[$flk].'"';
|
||||
}
|
||||
if (!empty($flkv)){
|
||||
echo ' data-val="'.$data[$flkv].'"';
|
||||
}
|
||||
echo '>' . $data[$flv];
|
||||
if (!empty($flv2)){
|
||||
echo ' / '.$data[$flv2];
|
||||
}
|
||||
echo '</option>';
|
||||
}
|
||||
foreach ($select_opt as $data) {
|
||||
echo '<option value="' . $data[$fld] . '"';
|
||||
if ($key == $data[$fld]) {
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
if (!empty($flk)) {
|
||||
echo ' data-id="'.$data[$flk].'"';
|
||||
}
|
||||
if (!empty($flkv)) {
|
||||
echo ' data-val="'.$data[$flkv].'"';
|
||||
}
|
||||
echo '>' . $data[$flv];
|
||||
if (!empty($flv2)) {
|
||||
echo ' / '.$data[$flv2];
|
||||
}
|
||||
echo '</option>';
|
||||
}
|
||||
|
||||
?> </select>
|
||||
?> </select>
|
||||
</div></div>
|
||||
</div></div>
|
||||
<div class="row"><div class="col-md-12">
|
||||
|
@ -741,9 +740,8 @@ foreach ($items as $child) {
|
|||
</div>
|
||||
<?php
|
||||
echo '<!-- END '.$child->label.' -->';
|
||||
|
||||
}
|
||||
if ($child['type'] == 'ITED') {
|
||||
if ($child['type'] == 'ITED') {
|
||||
$res_input = '';
|
||||
$res_name = '';
|
||||
$res_na = (string)$child->name;
|
||||
|
@ -790,8 +788,8 @@ foreach ($items as $child) {
|
|||
}
|
||||
$opt_at[$fields_id]['type']=(string)$value['type'];
|
||||
$res_opt['addon'] ='';
|
||||
if (isset($value->options)){
|
||||
foreach ($value->options ->attributes() as $optkey =>$optval){
|
||||
if (isset($value->options)) {
|
||||
foreach ($value->options ->attributes() as $optkey => $optval) {
|
||||
$opt_at[$fields_id]['options'][$optkey]=(string)$optval;
|
||||
$res_opt['addon'] .=' '.$optkey.'="'.$optval.'"';
|
||||
}
|
||||
|
@ -800,7 +798,7 @@ foreach ($items as $child) {
|
|||
echo '<td class="">';
|
||||
$res_opt['inp_st'] = '<div class="input-group"> <span class="input-group-addon" id="basep_'.$res_n.'">'.$opt_at[$fields_id]['display_prefix'].'</span>';
|
||||
$res_opt['inp_end'] = '<span class="input-group-addon" id="bases_'.$res_n.'">'.$opt_at[$fields_id]['display_sufix'].'</span></div>';
|
||||
switch ($value['type']){
|
||||
switch ($value['type']) {
|
||||
case 'date':
|
||||
echo $res_opt['inp_st'].'<input type="date" name="'. $res_n.'" value="'.$res_vf[$i2].'"'.$res_opt['addon']. '>'.$res_opt['inp_end'];
|
||||
break;
|
||||
|
@ -811,7 +809,7 @@ foreach ($items as $child) {
|
|||
echo $res_opt['inp_st'].'<input type="text" name="'. $res_n.'" value="'.$res_vf[$i2].'"'.$res_opt['addon']. '>'.$res_opt['inp_end'];
|
||||
break;
|
||||
case 'title':
|
||||
if ($i > 0 ) {
|
||||
if ($i > 0) {
|
||||
break;
|
||||
}
|
||||
case 'label':
|
||||
|
@ -821,7 +819,7 @@ foreach ($items as $child) {
|
|||
case 'select':
|
||||
echo $res_opt['inp_st'].'<select name="'.$res_n.'" id="' . $res_n . '"'. $res_opt['addon'].'>';
|
||||
$opt_at[$fields_id]['data']='';
|
||||
foreach ($value->xpath('data') as $optselect ){
|
||||
foreach ($value->xpath('data') as $optselect) {
|
||||
$opt_at[$fields_id]['data'].= (string)$optselect.';';
|
||||
echo '<option value="' . $optselect. '"';
|
||||
if (strtolower((string)$optselect) == strtolower((string)$res_vf[$i2])) {
|
||||
|
@ -834,26 +832,24 @@ foreach ($items as $child) {
|
|||
}
|
||||
echo '</td>';
|
||||
$i2 ++;
|
||||
|
||||
}
|
||||
echo '<td><input type="button" id="'.$res_id.'-btn" data-id="'.($i).'" data-for="'.$res_id.'" data-json="'.bin2hex(json_encode($opt_at)).'" class="table-js-add" value="+" />';
|
||||
if ($i > 0 ) {
|
||||
if ($i > 0) {
|
||||
echo '<input type="button" id="'.$res_id.'-btndel" data-id="'.($i).'" data-for="'.$res_id.'" class="table-js-del" value="-" />';
|
||||
}
|
||||
|
||||
echo '</td></tr>';
|
||||
$i++;
|
||||
}
|
||||
echo '</table>';
|
||||
echo '<!-- END '.$res_id.' -->';
|
||||
|
||||
}
|
||||
echo '</table>';
|
||||
echo '<!-- END '.$res_id.' -->';
|
||||
}
|
||||
|
||||
if ($child['type'] == 'HLP' ) {
|
||||
if ($child['type'] == 'HLP') {
|
||||
$res_n = (string)$child ->name;
|
||||
$res_id = $npref.$res_n;
|
||||
if (empty($child->class)) {
|
||||
$child->class = 'form-control';
|
||||
$child->class = 'form-control';
|
||||
}
|
||||
echo '<!-- Begin '.$child->label.' -->';
|
||||
|
||||
|
@ -866,41 +862,40 @@ foreach ($items as $child) {
|
|||
</div>
|
||||
<div class="panel-body collapse" id="<?php echo $res_id;?>">
|
||||
<?php
|
||||
foreach ($child->xpath('element') as $value) {
|
||||
switch ($value['type']){
|
||||
case 'p':
|
||||
case 'h1':
|
||||
case 'h2':
|
||||
case 'h3':
|
||||
case 'h4':
|
||||
echo '<'.$value['type'].'>'._((string)$value).'</'.$value['type'].'>';
|
||||
break;
|
||||
case 'table':
|
||||
echo '<'.$value['type'].' class="table" >';
|
||||
foreach ($value->xpath('row') as $trow) {
|
||||
echo '<tr>';
|
||||
foreach ($trow->xpath('col') as $tcol) {
|
||||
echo '<td>'._((string)$tcol).'</td>';
|
||||
}
|
||||
echo '</tr>';
|
||||
}
|
||||
echo '</'.$value['type'].'>';
|
||||
break;
|
||||
foreach ($child->xpath('element') as $value) {
|
||||
switch ($value['type']) {
|
||||
case 'p':
|
||||
case 'h1':
|
||||
case 'h2':
|
||||
case 'h3':
|
||||
case 'h4':
|
||||
echo '<'.$value['type'].'>'._((string)$value).'</'.$value['type'].'>';
|
||||
break;
|
||||
case 'table':
|
||||
echo '<'.$value['type'].' class="table" >';
|
||||
foreach ($value->xpath('row') as $trow) {
|
||||
echo '<tr>';
|
||||
foreach ($trow->xpath('col') as $tcol) {
|
||||
echo '<td>'._((string)$tcol).'</td>';
|
||||
}
|
||||
echo '</tr>';
|
||||
}
|
||||
}
|
||||
echo '</'.$value['type'].'>';
|
||||
break;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
echo '<!-- END '.$child->label.' -->';
|
||||
|
||||
}
|
||||
if ($child['type'] == 'MINFO' ) {
|
||||
if ($child['type'] == 'MINFO') {
|
||||
$res_n = (string)$child ->name;
|
||||
$res_id = $npref.$res_n;
|
||||
if (empty($child->class)) {
|
||||
$child->class = 'form-control';
|
||||
$child->class = 'form-control';
|
||||
}
|
||||
echo '<!-- Begin '.$child->label.' -->';
|
||||
?>
|
||||
|
@ -933,21 +928,21 @@ foreach ($items as $child) {
|
|||
$res_id = $npref.$res_n;
|
||||
$child->value ='';
|
||||
|
||||
if (!empty($metainfo[$res_n])){
|
||||
if (!empty($metainfo[$res_n])) {
|
||||
if ($child->meta_help == '1' || $child->help == 'Help!') {
|
||||
$child->help = $metainfo[$res_n]['Description'];
|
||||
}
|
||||
}
|
||||
|
||||
$time_regions = array('Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Russian', 'Indian', 'Pacific');
|
||||
$time_zone_global = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC );
|
||||
$time_zone_global = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC);
|
||||
$time_zone_ru = array('Russian/Kaliningrad', 'Russian/Moscow', 'Russian/St.Peterburg', 'Russian/Samara', 'Russian/Novosibirsk', 'Russian/Ekaterinburg', 'Russian/Irkutsk', 'Russian/Yakutsk', 'Russian/Khabarovsk', 'Russian/Vladivostok', 'Russian/Sakhalin', 'Russian/Magadan', 'Russian/Kamchatka');
|
||||
$time_zone_list = array_merge($time_zone_global,$time_zone_ru);
|
||||
$time_zone_list = array_merge($time_zone_global, $time_zone_ru);
|
||||
$optgroup = '';
|
||||
sort($time_zone_list);
|
||||
|
||||
if (empty($child->class)) {
|
||||
$child->class = 'form-control';
|
||||
$child->class = 'form-control';
|
||||
}
|
||||
|
||||
if (!empty($fvalues[$res_n])) {
|
||||
|
@ -956,7 +951,7 @@ foreach ($items as $child) {
|
|||
}
|
||||
}
|
||||
|
||||
if (empty($child->value)){
|
||||
if (empty($child->value)) {
|
||||
$child->value = \date_default_timezone_get();
|
||||
// if (!empty($child->default)){
|
||||
// $child->value = $child->default;
|
||||
|
@ -974,19 +969,25 @@ foreach ($items as $child) {
|
|||
</div>
|
||||
<div class="col-md-9"> <!-- <div class = "lnet form-group form-inline" data-nextid=1> --> <?php
|
||||
echo '<select name="'.$res_id.'" class="'. $child->class . '" id="' . $res_id . '">';
|
||||
foreach ($time_zone_list as $opt_key) {
|
||||
$z = explode('/', $opt_key, 2);
|
||||
if (count($z) != 2 || !in_array($z[0], $time_regions)) continue;
|
||||
if ($optgroup != $z[0]) {
|
||||
if ($optgroup !== '') echo '</optgroup>';
|
||||
$optgroup = $z[0];
|
||||
echo '<optgroup label="' . htmlentities($z[0]) . '">';
|
||||
}
|
||||
echo '<option value="' . htmlentities($opt_key) . '" label="' . htmlentities(str_replace('_', ' ', $z[1])) . '"' . ($opt_key == $child->value ? ' selected="selected" >' : '>'). htmlentities(str_replace('_', ' ', $opt_key)) . '</option>';
|
||||
foreach ($time_zone_list as $opt_key) {
|
||||
$z = explode('/', $opt_key, 2);
|
||||
if (count($z) != 2 || !in_array($z[0], $time_regions)) {
|
||||
continue;
|
||||
}
|
||||
if ($optgroup != $z[0]) {
|
||||
if ($optgroup !== '') {
|
||||
echo '</optgroup>';
|
||||
}
|
||||
if ($optgroup !== '') echo '</optgroup>';
|
||||
$optgroup = $z[0];
|
||||
echo '<optgroup label="' . htmlentities($z[0]) . '">';
|
||||
}
|
||||
echo '<option value="' . htmlentities($opt_key) . '" label="' . htmlentities(str_replace('_', ' ', $z[1])) . '"' . ($opt_key == $child->value ? ' selected="selected" >' : '>'). htmlentities(str_replace('_', ' ', $opt_key)) . '</option>';
|
||||
}
|
||||
if ($optgroup !== '') {
|
||||
echo '</optgroup>';
|
||||
}
|
||||
|
||||
?> </select>
|
||||
?> </select>
|
||||
<!-- </div> --> </div>
|
||||
</div></div>
|
||||
<div class="row"><div class="col-md-12">
|
||||
|
@ -996,15 +997,12 @@ foreach ($items as $child) {
|
|||
<!--END System Language-->
|
||||
<?php
|
||||
echo '<!-- END '.$child->label.' -->';
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if ($h_show==1) {
|
||||
echo '</div>';
|
||||
}
|
||||
?>
|
||||
if ($h_show==1) {
|
||||
echo '</div>';
|
||||
}
|
||||
?>
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
// vim: set ai ts=4 sw=4 ft=phtml:
|
||||
$roming_enable = '';
|
||||
if (!empty($this->sccpvalues['system_rouminguser'])) {
|
||||
if ($this->sccpvalues['system_rouminguser']['data'] == 'yes'){
|
||||
if ($this->sccpvalues['system_rouminguser']['data'] == 'yes') {
|
||||
$roming_enable = 'yes';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,7 +86,7 @@
|
|||
if (val[0] === 'line') {
|
||||
result = result + val[1] + '<br>';
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,21 +3,21 @@
|
|||
<a href="config.php?display=sccp_phone&tech_hardware=cisco" class = "btn btn-default"><i class="fa fa-plus"></i> <?php echo _("Add Device")?></a>
|
||||
</div>
|
||||
<table id="sccpnavgrid"
|
||||
data-search="true"
|
||||
data-toolbar="#toolbar-sccpnav"
|
||||
data-url="ajax.php?module=sccp_manager&command=getPhoneGrid&type=sccp"
|
||||
data-cache="false"
|
||||
data-toggle="table"
|
||||
class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
data-search="true"
|
||||
data-toolbar="#toolbar-sccpnav"
|
||||
data-url="ajax.php?module=sccp_manager&command=getPhoneGrid&type=sccp"
|
||||
data-cache="false"
|
||||
data-toggle="table"
|
||||
class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sortable="true" data-field="mac"><?php echo _('SEP ID') ?></th>
|
||||
<th data-sortable="true" data-field="description"><?php echo _('Descriptions') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
<script type="text/javascript">
|
||||
$("#sccpnavgrid").on('click-row.bs.table',function(e,row,elem){
|
||||
window.location = '?display=sccp_phone&tech_hardware=cisco&id='+row['mac'];
|
||||
})
|
||||
$("#sccpnavgrid").on('click-row.bs.table',function(e,row,elem){
|
||||
window.location = '?display=sccp_phone&tech_hardware=cisco&id='+row['mac'];
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
if (val[0] === 'line') {
|
||||
result = result + val[1] + '<br>';
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
<?php
|
||||
|
||||
echo $this->ShowGroup('sccp_srst',1);
|
||||
echo $this->ShowGroup('sccp_srst', 1);
|
||||
// echo $this->ShowGroup('sccp_dev_time',1);
|
||||
|
||||
?>
|
||||
|
|
|
@ -11,7 +11,7 @@ $def_val = null;
|
|||
$dev_id = null;
|
||||
$sccp_codec = $this->getCodecs('audio', true);
|
||||
$video_codecs = $this->getCodecs('video', true);
|
||||
$sccp_disalow_def = $this->extconfigs->getextConfig('sccpDefaults','disallow');
|
||||
$sccp_disalow_def = $this->extconfigs->getextConfig('sccpDefaults', 'disallow');
|
||||
$sccp_disalow = $sccp_disalow_def;
|
||||
|
||||
if (!empty($_REQUEST['id'])) {
|
||||
|
@ -19,7 +19,7 @@ if (!empty($_REQUEST['id'])) {
|
|||
$db_res = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_byid', array("id" => $dev_id));
|
||||
if (!empty($db_res['allow'])) {
|
||||
$i = 1;
|
||||
foreach(explode(';', $db_res['allow']) as $c){
|
||||
foreach (explode(';', $db_res['allow']) as $c) {
|
||||
$codec_list[$c] = $i;
|
||||
$i ++;
|
||||
}
|
||||
|
@ -29,10 +29,9 @@ if (!empty($_REQUEST['id'])) {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (!empty($db_res['disallow'])) {
|
||||
$sccp_disalow = $db_res['disallow'];
|
||||
}
|
||||
|
||||
if (!empty($db_res['disallow'])) {
|
||||
$sccp_disalow = $db_res['disallow'];
|
||||
}
|
||||
} else {
|
||||
$codec_list = $sccp_codec;
|
||||
}
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
|
||||
<?php
|
||||
|
||||
echo $this->ShowGroup('sccp_dev_ntp',1);
|
||||
echo $this->ShowGroup('sccp_dev_time',1);
|
||||
echo $this->ShowGroup('sccp_dev_ntp', 1);
|
||||
echo $this->ShowGroup('sccp_dev_time', 1);
|
||||
|
||||
?>
|
||||
</form>
|
||||
|
|
|
@ -22,11 +22,11 @@ if (strlen($data) >0 ){
|
|||
<input type="hidden" name="Submit" value="Submit">
|
||||
<?php
|
||||
|
||||
echo $this->ShowGroup('sccp_dev_config',1);
|
||||
echo $this->ShowGroup('sccp_dev_group_config',1);
|
||||
echo $this->ShowGroup('sccp_dev_advconfig',1);
|
||||
echo $this->ShowGroup('sccp_dev_softkey',1);
|
||||
echo $this->ShowGroup('sccp_dev_url',1);
|
||||
echo $this->ShowGroup('sccp_hotline_config',1);
|
||||
echo $this->ShowGroup('sccp_dev_config', 1);
|
||||
echo $this->ShowGroup('sccp_dev_group_config', 1);
|
||||
echo $this->ShowGroup('sccp_dev_advconfig', 1);
|
||||
echo $this->ShowGroup('sccp_dev_softkey', 1);
|
||||
echo $this->ShowGroup('sccp_dev_url', 1);
|
||||
echo $this->ShowGroup('sccp_hotline_config', 1);
|
||||
?>
|
||||
</form>
|
||||
|
|
|
@ -74,7 +74,7 @@ if (empty($ast_realtime)) {
|
|||
$rt_sccp = 'SCCP ERROR';
|
||||
$rt_info .= '<div class="alert signature alert-danger"> Error : ' . $value['message'] . '</div>';
|
||||
}
|
||||
} else if ($value['status'] == 'ERROR') {
|
||||
} elseif ($value['status'] == 'ERROR') {
|
||||
$rt_info .= '<div> Found error in realtime sectoin [' . $key . '] : ' . $value['message'] . '</div>';
|
||||
}
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ if (empty($conf_realtime)) {
|
|||
}
|
||||
// $mysql_info
|
||||
if ($mysql_info['Value'] <= '2000') {
|
||||
$this->info_warning['MySql'] = Array('Increase Mysql Group Concat Max. Length', 'Step 1: Go to mysql path <br> nano /etc/my.cnf',
|
||||
$this->info_warning['MySql'] = array('Increase Mysql Group Concat Max. Length', 'Step 1: Go to mysql path <br> nano /etc/my.cnf',
|
||||
'Step 2: And add the following line below [mysqld] as shown below <br> [mysqld] <br>group_concat_max_len = 4096 or more',
|
||||
'Step 3: Save and restart <br> systemctl restart mariadb.service<br> Or <br> service mysqld restart');
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ if ($cisco_tz['offset'] == 0) {
|
|||
$tmp_dt = new DateTime(null, new DateTimeZone($conf_tz));
|
||||
$tmp_ofset = $tmp_dt->getOffset();
|
||||
if (($cisco_tz['offset'] != ($tmp_ofset / 60) )) {
|
||||
$this->info_warning['NTP'] = Array('The selected NTP time zone is not supported by cisco devices.', 'We will use the Greenwich Time zone');
|
||||
$this->info_warning['NTP'] = array('The selected NTP time zone is not supported by cisco devices.', 'We will use the Greenwich Time zone');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -121,59 +121,59 @@ global $amp_conf;
|
|||
if ($test_any == 1) {
|
||||
# Output option list, HTML.
|
||||
|
||||
$timezone_identifiers = DateTimeZone::listIdentifiers();
|
||||
$timezone_abbreviations = DateTimeZone::listAbbreviations();
|
||||
$a = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC );
|
||||
$timezone_identifiers = DateTimeZone::listIdentifiers();
|
||||
$timezone_abbreviations = DateTimeZone::listAbbreviations();
|
||||
$a = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC);
|
||||
|
||||
|
||||
$Ts_set = $a[200];
|
||||
$Ts_set = $a[200];
|
||||
|
||||
|
||||
// ************************************************************************************
|
||||
print_r("<br> Help Info:<br><pre>");
|
||||
print_r("<br>");
|
||||
print_r("<br> Help Info:<br><pre>");
|
||||
print_r("<br>");
|
||||
//print_r(array_column($timezone_abbreviations, 'timezone_id'));
|
||||
print_r($Ts_set);
|
||||
$tz_tmp = array();
|
||||
print_r($Ts_set);
|
||||
$tz_tmp = array();
|
||||
|
||||
foreach ($timezone_abbreviations as $subArray) {
|
||||
$dddd = array_search($Ts_set ,array_column($subArray, 'timezone_id'));
|
||||
if (!empty($dddd)) {
|
||||
$tz_tmp[] = $subArray[$dddd];
|
||||
foreach ($timezone_abbreviations as $subArray) {
|
||||
$dddd = array_search($Ts_set, array_column($subArray, 'timezone_id'));
|
||||
if (!empty($dddd)) {
|
||||
$tz_tmp[] = $subArray[$dddd];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($tz_tmp)) {
|
||||
print_r('erroe');
|
||||
}
|
||||
if (count($tz_tmp)==1) {
|
||||
$time_set = $tz_tmp[0];
|
||||
} else {
|
||||
$tmp_dt = new DateTime(null, new DateTimeZone($Ts_set));
|
||||
$tmp_ofset = $tmp_dt->getOffset();
|
||||
foreach ($tz_tmp as $subArray) {
|
||||
if ($subArray['offset'] == $tmp_ofset) {
|
||||
$time_set = $subArray;
|
||||
}
|
||||
if (empty($tz_tmp)) {
|
||||
print_r('erroe');
|
||||
}
|
||||
if (count($tz_tmp)==1) {
|
||||
$time_set = $tz_tmp[0];
|
||||
} else {
|
||||
$tmp_dt = new DateTime(null, new DateTimeZone($Ts_set));
|
||||
$tmp_ofset = $tmp_dt->getOffset();
|
||||
foreach ($tz_tmp as $subArray) {
|
||||
if ($subArray['offset'] == $tmp_ofset) {
|
||||
$time_set = $subArray;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print_r("<br>");
|
||||
print_r("<br>");
|
||||
//print_r($time_set);
|
||||
print_r($this->sccpvalues['ntp_timezone']);
|
||||
print_r($this->sccpvalues['ntp_timezone']);
|
||||
//print_r($tz_tmp);
|
||||
print_r("<br>");
|
||||
print_r("<br>");
|
||||
print_r("<br>");
|
||||
print_r("<br>");
|
||||
|
||||
print_r("<br>");
|
||||
print_r("<br>");
|
||||
//print_r($timezone_abbreviations);
|
||||
//print_r($timezone_identifiers);
|
||||
//print_r($timezone);
|
||||
//print_r($transitions);
|
||||
|
||||
|
||||
print_r("<br>");
|
||||
print_r("</pre>");
|
||||
print_r("<br>");
|
||||
print_r("</pre>");
|
||||
// print_r("DIRECT START");
|
||||
// print_r($this->sccpvalues['ccm_address']);
|
||||
//print_r($this->get_php_classes('\\FreePBX\\modules'));
|
||||
|
@ -468,7 +468,7 @@ if (!empty($this->info_warning)) {
|
|||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<?php
|
||||
<?php
|
||||
}
|
||||
|
||||
if (!empty($this->class_error)) {
|
||||
|
@ -488,7 +488,7 @@ if (!empty($this->class_error)) {
|
|||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<div class="fpbx-container container-fluid">
|
||||
<div class="row">
|
||||
<div class="container">
|
||||
|
|
|
@ -22,12 +22,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<?php
|
||||
echo $this->ShowGroup('sccp_general',1);
|
||||
echo $this->ShowGroup('sccp_dev_time_s',1);
|
||||
echo $this->ShowGroup('sccp_net',1);
|
||||
echo $this->ShowGroup('sccp_lang',1);
|
||||
echo $this->ShowGroup('sccp_qos_config',1);
|
||||
echo $this->ShowGroup('sccp_extpath_config',1);
|
||||
echo $this->ShowGroup('sccp_general', 1);
|
||||
echo $this->ShowGroup('sccp_dev_time_s', 1);
|
||||
echo $this->ShowGroup('sccp_net', 1);
|
||||
echo $this->ShowGroup('sccp_lang', 1);
|
||||
echo $this->ShowGroup('sccp_qos_config', 1);
|
||||
echo $this->ShowGroup('sccp_extpath_config', 1);
|
||||
|
||||
?>
|
||||
|
||||
|
|
Loading…
Reference in a new issue