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:
Diederik de Groot 2020-04-09 09:25:43 +00:00
parent ca16773fa5
commit de0a07562f
No known key found for this signature in database
GPG key ID: AFA728250A1BECD6
40 changed files with 2004 additions and 1726 deletions

View file

@ -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;
}
}

View file

@ -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
{
}

View file

@ -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");
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}

View file

@ -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;
}
}

View file

@ -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));
}
}

View file

@ -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');

View file

@ -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) {

View file

@ -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;
}
}

View file

@ -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;
}
?>

View file

@ -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>");

View file

@ -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">

View file

@ -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">

View file

@ -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">

View file

@ -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";
?>

View file

@ -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&amp;command=getSoftKey&amp;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>

View file

@ -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];

View file

@ -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);

View file

@ -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");

View file

@ -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);

View file

@ -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.' -->';
}
}
?>

View file

@ -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>

View file

@ -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.' -->';
}
}
?>

View file

@ -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>';
}
?>

View file

@ -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';
}
}

View file

@ -86,7 +86,7 @@
if (val[0] === 'line') {
result = result + val[1] + '<br>';
}
}
}
return result;
}

View file

@ -3,21 +3,21 @@
<a href="config.php?display=sccp_phone&amp;tech_hardware=cisco" class = "btn btn-default"><i class="fa fa-plus"></i>&nbsp;<?php echo _("Add Device")?></a>
</div>
<table id="sccpnavgrid"
data-search="true"
data-toolbar="#toolbar-sccpnav"
data-url="ajax.php?module=sccp_manager&amp;command=getPhoneGrid&amp;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&amp;command=getPhoneGrid&amp;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>

View file

@ -80,7 +80,7 @@
if (val[0] === 'line') {
result = result + val[1] + '<br>';
}
}
}
return result;
}

View file

@ -12,7 +12,7 @@
<?php
echo $this->ShowGroup('sccp_srst',1);
echo $this->ShowGroup('sccp_srst', 1);
// echo $this->ShowGroup('sccp_dev_time',1);
?>

View file

@ -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;
}

View file

@ -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>

View file

@ -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>

View file

@ -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">

View file

@ -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);
?>