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

@ -81,7 +81,8 @@
namespace FreePBX\modules; namespace FreePBX\modules;
class Sccp_manager extends \FreePBX_Helpers implements \BMO { class Sccp_manager extends \FreePBX_Helpers implements \BMO
{
/* Field Values for type seq */ /* Field Values for type seq */
// const General - sccp.conf = '0'; // const General - sccp.conf = '0';
@ -111,7 +112,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
public $class_error; //error construct public $class_error; //error construct
public $info_warning; public $info_warning;
public function __construct($freepbx = null) { public function __construct($freepbx = null)
{
if ($freepbx == null) { if ($freepbx == null) {
throw new Exception("Not given a FreePBX Object"); 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 * 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 = ""; $htmlret = "";
if (empty($form_values)) { if (empty($form_values)) {
$form_values = $this->sccpvalues; $form_values = $this->sccpvalues;
@ -181,8 +184,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
$htmlret .= load_view(__DIR__ . '/views/formShow.php', array( $htmlret .= load_view(__DIR__ . '/views/formShow.php', array(
'itm' => $item, 'h_show' => $heder_show, 'itm' => $item, 'h_show' => $heder_show,
'form_prefix' => $form_prefix, 'fvalues' => $form_values, 'form_prefix' => $form_prefix, 'fvalues' => $form_values,
'tftp_lang' => $this->getTftpLang(), 'metainfo' => $this->sccp_metainfo) 'tftp_lang' => $this->getTftpLang(), 'metainfo' => $this->sccp_metainfo));
);
} }
} else { } else {
$htmlret .= load_view(__DIR__ . '/views/formShowError.php'); $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 * Load config vars from base array
*/ */
public function initVarfromDefs() { public function initVarfromDefs()
{
foreach ($this->extconfigs->getextConfig('sccpDefaults') as $key => $value) { foreach ($this->extconfigs->getextConfig('sccpDefaults') as $key => $value) {
if (empty($this->sccpvalues[$key])) { if (empty($this->sccpvalues[$key])) {
$this->sccpvalues[$key] = array('keyword' => $key, 'data' => $value, 'type' => '0', 'seq' => '0'); $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 * Load config vars from xml
*/ */
public function initVarfromXml() { public function initVarfromXml()
{
if ((array) $this->xml_data) { if ((array) $this->xml_data) {
foreach ($this->xml_data->xpath('//page_group') as $item) { foreach ($this->xml_data->xpath('//page_group') as $item) {
foreach ($item->children() as $child) { foreach ($item->children() as $child) {
@ -215,7 +219,6 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
$seq = (string) $child['seq']; $seq = (string) $child['seq'];
} }
if ($seq < 99) { if ($seq < 99) {
if ($child['type'] == 'IE') { if ($child['type'] == 'IE') {
foreach ($child->xpath('input') as $value) { foreach ($child->xpath('input') as $value) {
$tp = 0; $tp = 0;
@ -224,8 +227,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
} else { } else {
$datav = (string) $value->value; $datav = (string) $value->value;
} }
if (strtolower($value->type) == 'number') if (strtolower($value->type) == 'number') {
$tp = 1; $tp = 1;
}
if (empty($this->sccpvalues[(string) $value->name])) { 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[(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'); // $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 */ /* unused */
public function doConfigPageInit($page) { public function doConfigPageInit($page)
{
$this->doGeneralPost(); $this->doGeneralPost();
} }
/* unused */ /* unused */
public function install() { public function install()
{
} }
/* unused */ /* unused */
public function uninstall() { public function uninstall()
{
} }
/* unused */ /* unused */
public function backup() { public function backup()
{
} }
/* unused */ /* unused */
public function restore($backup) { public function restore($backup)
{
} }
public function getActionBar($request) { public function getActionBar($request)
{
$buttons = array(); $buttons = array();
switch ($request['display']) { switch ($request['display']) {
case 'sccp_adv': case 'sccp_adv':
@ -368,7 +374,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
* Show form information - General * Show form information - General
*/ */
public function myShowPage() { public function myShowPage()
{
$request = $_REQUEST; $request = $_REQUEST;
$action = !empty($request['action']) ? $request['action'] : ''; $action = !empty($request['action']) ? $request['action'] : '';
if ($this->sccpvalues['sccp_compatible']['data'] >= '433') { if ($this->sccpvalues['sccp_compatible']['data'] >= '433') {
@ -434,7 +441,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $this->pagedata; return $this->pagedata;
} }
public function InfoServerShowPage() { public function InfoServerShowPage()
{
$request = $_REQUEST; $request = $_REQUEST;
$action = !empty($request['action']) ? $request['action'] : ''; $action = !empty($request['action']) ? $request['action'] : '';
$this->pagedata = array( $this->pagedata = array(
@ -454,7 +462,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $this->pagedata; return $this->pagedata;
} }
public function AdvServerShowPage() { public function AdvServerShowPage()
{
$request = $_REQUEST; $request = $_REQUEST;
$action = !empty($request['action']) ? $request['action'] : ''; $action = !empty($request['action']) ? $request['action'] : '';
$inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : ''; $inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : '';
@ -500,7 +509,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $this->pagedata; return $this->pagedata;
} }
public function PhoneShowPage() { public function PhoneShowPage()
{
$request = $_REQUEST; $request = $_REQUEST;
$action = !empty($request['action']) ? $request['action'] : ''; $action = !empty($request['action']) ? $request['action'] : '';
$inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : ''; $inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : '';
@ -591,7 +601,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $this->pagedata; return $this->pagedata;
} }
public function FormShowPage() { public function FormShowPage()
{
$request = $_REQUEST; $request = $_REQUEST;
$action = !empty($request['action']) ? $request['action'] : ''; $action = !empty($request['action']) ? $request['action'] : '';
@ -622,13 +633,15 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $this->pagedata; return $this->pagedata;
} }
public function getRightNav($request) { public function getRightNav($request)
{
if (isset($request['tech_hardware']) && ($request['tech_hardware'] == 'cisco')) { if (isset($request['tech_hardware']) && ($request['tech_hardware'] == 'cisco')) {
return load_view(__DIR__ . "/views/hardware.rnav.php", array('request' => $request)); return load_view(__DIR__ . "/views/hardware.rnav.php", array('request' => $request));
} }
} }
public function ajaxRequest($req, &$setting) { public function ajaxRequest($req, &$setting)
{
switch ($req) { switch ($req) {
case 'backupsettings': case 'backupsettings':
case 'savesettings': case 'savesettings':
@ -661,7 +674,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return false; return false;
} }
public function ajaxHandler() { public function ajaxHandler()
{
$request = $_REQUEST; $request = $_REQUEST;
$msg = array(); $msg = array();
$cmd_id = $request['command']; $cmd_id = $request['command'];
@ -829,7 +843,6 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
$hw_list[] = array('name' => $idv); $hw_list[] = array('name' => $idv);
} }
if ($idv == 'all') { if ($idv == 'all') {
} }
} }
} }
@ -887,7 +900,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
case 'all': case 'all':
case 'extension': case 'extension':
case 'enabled': case 'enabled':
$devices = $this->getSccp_model_information($request['type'], $validate = TRUE); $devices = $this->getSccp_model_information($request['type'], $validate = true);
break; break;
} }
if (empty($devices)) { if (empty($devices)) {
@ -1047,11 +1060,13 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
} }
} }
public function doGeneralPost() { public function doGeneralPost()
{
// $this->FreePBX->WriteConfig($config); // $this->FreePBX->WriteConfig($config);
if (!isset($_REQUEST['Submit'])) if (!isset($_REQUEST['Submit'])) {
return; 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 // Get Model Buttons info
$res = array(); $res = array();
$def_feature = array('parkinglot' => array('name' => 'P.slot', 'value' => 'default'), $def_feature = array('parkinglot' => array('name' => 'P.slot', 'value' => 'default'),
@ -1174,7 +1190,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $res; return $res;
} }
function save_hw_phone($get_settings, $validateonly = false) { function save_hw_phone($get_settings, $validateonly = false)
{
$hdr_prefix = 'sccp_hw_'; $hdr_prefix = 'sccp_hw_';
$hdr_arprefix = 'sccp_hw-ar_'; $hdr_arprefix = 'sccp_hw-ar_';
@ -1225,8 +1242,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
$i++; $i++;
}; };
$value = implode(";", $save_codec); $value = implode(";", $save_codec);
} else } else {
$value = 'all'; // Bug If not System Codecs $value = 'all'; // Bug If not System Codecs
}
// } else $value = 'alaw;ulaw'; // Bug If not System Codecs // } else $value = 'alaw;ulaw'; // Bug If not System Codecs
break; break;
case 'phonecodepage': case 'phonecodepage':
@ -1250,20 +1268,20 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
// } // }
// break; // break;
// //
default : default:
if (!empty($get_settings[$hdr_prefix . $key])) { if (!empty($get_settings[$hdr_prefix . $key])) {
$value = $get_settings[$hdr_prefix . $key]; $value = $get_settings[$hdr_prefix . $key];
} }
if (!empty($get_settings[$hdr_arprefix . $key])) { if (!empty($get_settings[$hdr_arprefix . $key])) {
$arr_data = ''; $arr_data = '';
$arr_clear = FALSE; $arr_clear = false;
foreach ($get_settings[$hdr_arprefix . $key] as $vkey => $vval) { foreach ($get_settings[$hdr_arprefix . $key] as $vkey => $vval) {
$tmp_data = ''; $tmp_data = '';
foreach ($vval as $vkey => $vval) { foreach ($vval as $vkey => $vval) {
switch ($vkey) { switch ($vkey) {
case 'inherit': case 'inherit':
if ($vval == 'on') { if ($vval == 'on') {
$arr_clear = TRUE; $arr_clear = true;
// Злобный ХАК // Злобный ХАК
if ($key == 'permit') { if ($key == 'permit') {
$save_settings['deny'] = 'NONE'; $save_settings['deny'] = 'NONE';
@ -1325,7 +1343,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $save_settings; return $save_settings;
} }
function save_submit($get_settings, $validateonly = false) { function save_submit($get_settings, $validateonly = false)
{
$hdr_prefix = 'sccp_'; $hdr_prefix = 'sccp_';
$hdr_arprefix = 'sccp-ar_'; $hdr_arprefix = 'sccp-ar_';
$save_settings = array(); $save_settings = array();
@ -1416,7 +1435,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $save_settings; return $save_settings;
} }
function save_rouming_users($get_settings, $validateonly = false) { function save_rouming_users($get_settings, $validateonly = false)
{
$hdr_prefix = 'sccp_ru_'; $hdr_prefix = 'sccp_ru_';
$hdr_arprefix = 'sccp_ru-ar_'; $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']; $value = $get_settings[$hdr_prefix . 'netlang'] . ':' . $get_settings[$hdr_prefix . 'devlang'];
} }
break; break;
default : default:
if (!empty($get_settings[$hdr_prefix . $key])) { if (!empty($get_settings[$hdr_prefix . $key])) {
$value = $get_settings[$hdr_prefix . $key]; $value = $get_settings[$hdr_prefix . $key];
} }
if (!empty($get_settings[$hdr_arprefix . $key])) { if (!empty($get_settings[$hdr_arprefix . $key])) {
$arr_data = ''; $arr_data = '';
$arr_clear = FALSE; $arr_clear = false;
foreach ($get_settings[$hdr_arprefix . $key] as $vkey => $vval) { foreach ($get_settings[$hdr_arprefix . $key] as $vkey => $vval) {
$tmp_data = ''; $tmp_data = '';
foreach ($vval as $vkey => $vval) { foreach ($vval as $vkey => $vval) {
switch ($vkey) { switch ($vkey) {
case 'inherit': case 'inherit':
if ($vval == 'on') { if ($vval == 'on') {
$arr_clear = TRUE; $arr_clear = true;
// Злобный ХАК // Злобный ХАК
if ($key == 'permit') { if ($key == 'permit') {
$save_settings['deny'] = 'NONE'; $save_settings['deny'] = 'NONE';
@ -1515,7 +1535,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $save_settings; return $save_settings;
} }
public function getSccpSettingFromDB() { public function getSccpSettingFromDB()
{
$raw_data = $this->dbinterface->get_db_SccpSetting(); $raw_data = $this->dbinterface->get_db_SccpSetting();
foreach ($raw_data as $var) { foreach ($raw_data as $var) {
$this->sccpvalues[$var['keyword']] = array('keyword' => $var['keyword'], 'data' => $var['data'], 'seq' => $var['seq'], 'type' => $var['type']); $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; return;
} }
public function getMyConfig($var = null, $id = "noid") { public function getMyConfig($var = null, $id = "noid")
{
// $final = false; // $final = false;
switch ($var) { switch ($var) {
case "voicecodecs": case "voicecodecs":
@ -1558,7 +1580,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $final; return $final;
} }
public function getCodecs($type, $showDefaults = false) { public function getCodecs($type, $showDefaults = false)
{
$allSupported = array(); $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','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'); $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 {string} $type Codec Type
* @param {array} $codecs=array() The codecs with order, if blank set defaults * @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; $default = empty($codecs) ? true : false;
switch ($type) { switch ($type) {
case 'audio': case 'audio':
@ -1656,11 +1680,13 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return true; return true;
} }
function Sccp_manager_hookGet_config($engine) { function Sccp_manager_hookGet_config($engine)
{
$this->debugdata($engine); $this->debugdata($engine);
} }
function Sccp_manager_get_config($engine) { function Sccp_manager_get_config($engine)
{
$this->debugdata($engine); $this->debugdata($engine);
} }
@ -1689,11 +1715,13 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
* return fiends Lag pack * return fiends Lag pack
* *
*/ */
public function getTftpLang() { public function getTftpLang()
{
return $this->tftpLang; return $this->tftpLang;
} }
private function initTftpLang() { private function initTftpLang()
{
$result = array(); $result = array();
if (empty($this->sccppath["tftp_path"]) || empty($this->sccppath["tftp_lang_path"])) { if (empty($this->sccppath["tftp_path"]) || empty($this->sccppath["tftp_lang_path"])) {
return; return;
@ -1724,7 +1752,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
* Check tftp/xml file path and permissions * 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"]; $dir = $this->sccppath["tftp_lang_path"];
foreach ($this->extconfigs->getextConfig('sccp_lang') as $lang_key => $lang_value) { foreach ($this->extconfigs->getextConfig('sccp_lang') as $lang_key => $lang_value) {
$filename = $dir . DIRECTORY_SEPARATOR . $lang_value['locale']; $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 // !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 $db;
global $amp_conf; global $amp_conf;
$driver_revision = array('0' => '', '430' => '.v431', '431' => '.v432', '432' => '.v432', '433' => '.v433'); $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) { foreach ($this->srvinterface->sccp_list_keysets() as $keyl => $vall) {
$this->xmlinterface->create_xmlSoftkeyset($this->sccp_conf_init, $this->sccppath, $keyl); $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'; $dir = $this->sccppath["tftp_dialplan"] . '/dial*.xml';
$base_len = strlen($this->sccppath["tftp_dialplan"]) + 1; $base_len = strlen($this->sccppath["tftp_dialplan"]) + 1;
$res = glob($dir); $res = glob($dir);
@ -1828,7 +1860,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $res; return $res;
} }
function get_DialPlan($get_file) { function get_DialPlan($get_file)
{
$file = $this->sccppath["tftp_dialplan"] . '/' . $get_file . '.xml'; $file = $this->sccppath["tftp_dialplan"] . '/' . $get_file . '.xml';
if (file_exists($file)) { if (file_exists($file)) {
// $load_xml_data = simplexml_load_file($file); // $load_xml_data = simplexml_load_file($file);
@ -1842,7 +1875,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $res; return $res;
} }
function del_DialPlan($get_file) { function del_DialPlan($get_file)
{
if (!empty($get_file)) { if (!empty($get_file)) {
$file = $this->sccppath["tftp_dialplan"] . '/' . $get_file . '.xml'; $file = $this->sccppath["tftp_dialplan"] . '/' . $get_file . '.xml';
if (file_exists($file)) { if (file_exists($file)) {
@ -1852,7 +1886,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $res; return $res;
} }
function save_DialPlan($get_settings) { function save_DialPlan($get_settings)
{
$confDir = $this->sccppath["tftp_dialplan"]; $confDir = $this->sccppath["tftp_dialplan"];
return $this->xmlinterface->save_DialPlan($confDir, $get_settings); 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(); $save_buttons = array();
if (!empty($hw_list)) { if (!empty($hw_list)) {
@ -1883,7 +1919,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return array('Response' => ' Found 0 device ', 'data' => ''); return array('Response' => ' Found 0 device ', 'data' => '');
} }
$copy_fld = array('ref', 'reftype', 'instance', 'buttontype'); $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) { foreach ($buton_list as $value) {
$btn_opt = explode(',', $value['options']); $btn_opt = explode(',', $value['options']);
$btn_id = $btn_opt[0]; $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 * 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 $db;
global $amp_conf; global $amp_conf;
@ -1933,7 +1970,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
* Create XMLDefault.cnf.xml * Create XMLDefault.cnf.xml
*/ */
function sccp_create_tftp_XML() { function sccp_create_tftp_XML()
{
foreach ($this->sccpvalues as $key => $value) { foreach ($this->sccpvalues as $key => $value) {
$data_value[$key] = $value['data']; $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'); $data_value['server_if_list'] = $this->getIP_information2('ip4');
$model_information = $this->getSccp_model_information($get = "enabled", $validate = false); // Get Active $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 $model_information = $this->getSccp_model_information($get = "all", $validate = false); // Get All
}
$lang_data = $this->extconfigs->getextConfig('sccp_lang'); $lang_data = $this->extconfigs->getextConfig('sccp_lang');
$data_value['tftp_path'] = $this->sccppath["tftp_path"]; $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 * Create (SEP) dev_ID.cnf.xml
*/ */
function sccp_create_device_XML($dev_id = '') { function sccp_create_device_XML($dev_id = '')
{
if (empty($dev_id)) { if (empty($dev_id)) {
return false; 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); 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)) { if (empty($dev_id)) {
return false; 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; global $amp_conf;
$dir_info = array(); $dir_info = array();
$backup_files = array($amp_conf['ASTETCDIR'] . '/sccp', $amp_conf['ASTETCDIR'] . '/extensions', $amp_conf['ASTETCDIR'] . '/extconfig', $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; return $filename;
} }
function sccp_create_sccp_init() { function sccp_create_sccp_init()
{
// Make sccp.conf data // Make sccp.conf data
// [general] // [general]
foreach ($this->sccpvalues as $key => $value) { foreach ($this->sccpvalues as $key => $value) {
@ -2139,7 +2182,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
// return $this-> sccp_conf_init; // 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', '.LOADS', '.sbn', '.SBN', '.bin', '.BIN','.zup','.ZUP');
$file_ext = array('.loads', '.sbn', '.bin', '.zup'); $file_ext = array('.loads', '.sbn', '.bin', '.zup');
// $dir = $this->sccppath["tftp_path"]; // $dir = $this->sccppath["tftp_path"];
@ -2182,7 +2226,6 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
} }
break; break;
case 'internal2': case 'internal2':
break; break;
case 'off': case 'off':
default: // Place in root TFTP dir default: // Place in root TFTP dir
@ -2233,7 +2276,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $raw_settings; return $raw_settings;
} }
function get_hint_info($sort = true, $filter = array()) { function get_hint_info($sort = true, $filter = array())
{
$res = array(); $res = array();
$default_hint = '@ext-local'; $default_hint = '@ext-local';
@ -2277,7 +2321,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $res_sort; return $res_sort;
} }
function getIP_information2($type = '') { function getIP_information2($type = '')
{
$interfaces = array(); $interfaces = array();
switch ($type) { switch ($type) {
case 'ip4': case 'ip4':
@ -2293,21 +2338,24 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
} }
foreach ($result as $line) { foreach ($result as $line) {
$vals = preg_split("/\s+/", $line); $vals = preg_split("/\s+/", $line);
if ($vals[3] == "mtu") if ($vals[3] == "mtu") {
continue; continue;
if ($vals[2] != "inet" && $vals[2] != "inet6") }
if ($vals[2] != "inet" && $vals[2] != "inet6") {
continue; continue;
}
if (preg_match("/(.+?)(?:@.+)?:$/", $vals[1], $res)) { if (preg_match("/(.+?)(?:@.+)?:$/", $vals[1], $res)) {
continue; continue;
} }
$ret = preg_match("/(\d*+.\d*+.\d*+.\d*+)[\/(\d*+)]*/", $vals[3], $ip); $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; return $interfaces;
} }
function getIP_information_old() { function getIP_information_old()
{
$interfaces['auto'] = array('0.0.0.0', 'All', '0'); $interfaces['auto'] = array('0.0.0.0', 'All', '0');
exec("/sbin/ip -4 -o addr", $result, $ret); 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); $vals = preg_split("/\s+/", $line);
// We only care about ipv4 (inet) lines, or definition lines // 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; continue;
}
if (preg_match("/(.+?)(?:@.+)?:$/", $vals[1], $res)) { // Matches vlans, which are eth0.100@eth0 if (preg_match("/(.+?)(?:@.+)?:$/", $vals[1], $res)) { // Matches vlans, which are eth0.100@eth0
// It's a network definition. // It's a network definition.
@ -2343,19 +2392,23 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return $interfaces; return $interfaces;
} }
private function replaceSimpleXmlNode($xml, $element = SimpleXMLElement) { private function replaceSimpleXmlNode($xml, $element = SimpleXMLElement)
{
$dom = dom_import_simplexml($xml); $dom = dom_import_simplexml($xml);
$import = $dom->ownerDocument->importNode( $import = $dom->ownerDocument->importNode(
dom_import_simplexml($element), TRUE dom_import_simplexml($element),
true
); );
$dom->parentNode->replaceChild($import, $dom); $dom->parentNode->replaceChild($import, $dom);
} }
private function appendSimpleXmlNode($xml, $element = SimpleXMLElement) { private function appendSimpleXmlNode($xml, $element = SimpleXMLElement)
{
$dom = dom_import_simplexml($xml); $dom = dom_import_simplexml($xml);
$import = $dom->ownerDocument->importNode( $import = $dom->ownerDocument->importNode(
dom_import_simplexml($element), TRUE dom_import_simplexml($element),
true
); );
// $dom->parentNode->appendChild($import, $dom); // $dom->parentNode->appendChild($import, $dom);
$dom->parentNode->appendChild($import->cloneNode(true)); $dom->parentNode->appendChild($import->cloneNode(true));
@ -2365,7 +2418,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
// $dom = dom_import_simplexml($node); // $dom = dom_import_simplexml($node);
// $dom->parentNode->removeChild($dom); // $dom->parentNode->removeChild($dom);
// } // }
private function strpos_array($haystack, $needles) { private function strpos_array($haystack, $needles)
{
if (is_array($needles)) { if (is_array($needles)) {
foreach ($needles as $str) { foreach ($needles as $str) {
if (is_array($str)) { if (is_array($str)) {
@ -2373,19 +2427,20 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
} else { } else {
$pos = strpos($haystack, $str); $pos = strpos($haystack, $str);
} }
if ($pos !== FALSE) { if ($pos !== false) {
return $pos; return $pos;
} }
} }
} else { } else {
return strpos($haystack, $needles); 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))) { if (empty($dir) || (!file_exists($dir))) {
return $result; return $result;
} }
@ -2434,5 +2489,4 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
} }
return $result; return $result;
} }
} }

View file

@ -12,109 +12,127 @@ namespace FreePBX\modules\Sccp_manager\aminterface;
// ************************************************************************** Event ********************************************* // ************************************************************************** Event *********************************************
abstract class Event extends IncomingMessage { abstract class Event extends IncomingMessage
{
protected $_events; protected $_events;
public function getName() { public function getName()
{
return $this->getKey('Event'); return $this->getKey('Event');
} }
public function __construct($rawContent) { public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
$this->_events = array(); $this->_events = array();
$this->_eventsCount = 0; $this->_eventsCount = 0;
// $this->_completed = !$this->isList(); // $this->_completed = !$this->isList();
} }
} }
class UnknownEvent extends Event { class UnknownEvent extends Event
public function __construct($rawContent='') { {
public function __construct($rawContent = '')
{
print_r($rawContent); print_r($rawContent);
// die(); // die();
} }
} }
class TableStart_Event extends Event { class TableStart_Event extends Event
{
public function getTableName() { public function getTableName()
{
return $this->getKey('TableName'); return $this->getKey('TableName');
} }
} }
class TableEnd_Event extends Event { class TableEnd_Event extends Event
{
public function getTableName() { public function getTableName()
{
return $this->getKey('TableName'); return $this->getKey('TableName');
} }
} }
class SCCPSoftKeySetEntry_Event extends Event { class SCCPSoftKeySetEntry_Event extends Event
{
protected $_data; protected $_data;
public function __construct($rawContent) { public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
return null; return null;
} }
} }
class SCCPShowSoftKeySetsComplete_Event extends Event { class SCCPShowSoftKeySetsComplete_Event extends Event
{
public function getListItems() { public function getListItems()
{
return intval($this->getKey('ListItems')); 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'); return $this->getKey('Privilege');
} }
public function getExtension() { public function getExtension()
{
return $this->getKey('Exten'); return $this->getKey('Exten');
} }
public function getContext() { public function getContext()
{
return $this->getKey('Context'); return $this->getKey('Context');
} }
public function getHint() { public function getHint()
{
return $this->getKey('Hint'); return $this->getKey('Hint');
} }
public function getStatus() { public function getStatus()
{
return $this->getKey('Status'); return $this->getKey('Status');
} }
}
class SCCPDeviceEntry_Event extends Event
{
} }
class SCCPDeviceEntry_Event extends Event { class SCCPShowDeviceComplete_Event extends Event
{
} public function getListItems()
{
class SCCPShowDeviceComplete_Event extends Event {
public function getListItems() {
return intval($this->getKey('ListItems')); return intval($this->getKey('ListItems'));
} }
public function __construct($rawContent) { public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
$this->_completed = $this->getKey('EventList'); $this->_completed = $this->getKey('EventList');
// return null; // return null;
} }
} }
class SCCPShowDevice_Event extends Event { class SCCPShowDevice_Event extends Event
{
public function getCapabilities() { public function getCapabilities()
{
$ret = array(); $ret = array();
$codecs = explode(", ", substr($this->getKey('Capabilities'), 1, -1)); $codecs = explode(", ", substr($this->getKey('Capabilities'), 1, -1));
foreach ($codecs as $codec) { foreach ($codecs as $codec) {
@ -124,7 +142,8 @@ class SCCPShowDevice_Event extends Event {
return $ret; return $ret;
} }
public function getCodecsPreference() { public function getCodecsPreference()
{
$ret = array(); $ret = array();
$codecs = explode(", ", substr($this->getKey('CodecsPreference'), 1, -1)); $codecs = explode(", ", substr($this->getKey('CodecsPreference'), 1, -1));
foreach ($codecs as $codec) { foreach ($codecs as $codec) {
@ -133,25 +152,30 @@ class SCCPShowDevice_Event extends Event {
} }
return $ret; return $ret;
} }
} }
class SCCPShowDevicesComplete_Event extends Event { class SCCPShowDevicesComplete_Event extends Event
{
public function getListItems() { public function getListItems()
{
return intval($this->getKey('ListItems')); 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; 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 EOL = "\r\n";
const EOM = "\r\n\r\n"; const EOM = "\r\n\r\n";
@ -25,11 +27,12 @@ abstract class Message {
protected $createdDate; protected $createdDate;
private $_responseHandler; private $_responseHandler;
public function _ToDebug($level,$msg) { public function _ToDebug($level, $msg)
{
} }
public function getResponseHandler() { public function getResponseHandler()
{
if (strlen($this->_responseHandler) > 0) { if (strlen($this->_responseHandler) > 0) {
// throw new AMIException('Hier:' . $this->_responseHandler); // throw new AMIException('Hier:' . $this->_responseHandler);
return (string) $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)) { if (0 == strlen($responseHandler)) {
return; return;
} }
@ -50,7 +54,8 @@ abstract class Message {
} }
} }
public function setVariable($key, $value) { public function setVariable($key, $value)
{
$key = strtolower($key); $key = strtolower($key);
$this->variables[$key] = $value; $this->variables[$key] = $value;
/* print_r('<br>----Set Value -------<br>'); /* print_r('<br>----Set Value -------<br>');
@ -59,7 +64,8 @@ abstract class Message {
*/ */
} }
public function getVariable($key) { public function getVariable($key)
{
$key = strtolower($key); $key = strtolower($key);
if (!isset($this->variables[$key])) { if (!isset($this->variables[$key])) {
@ -68,7 +74,8 @@ abstract class Message {
return $this->variables[$key]; return $this->variables[$key];
} }
protected function setKey($key, $value) { protected function setKey($key, $value)
{
$key = strtolower((string) $key); $key = strtolower((string) $key);
$this->keys[$key] = (string) $value; $this->keys[$key] = (string) $value;
/* /*
@ -79,7 +86,8 @@ abstract class Message {
*/ */
} }
public function getKey($key) { public function getKey($key)
{
$key = strtolower($key); $key = strtolower($key);
if (!isset($this->keys[$key])) { if (!isset($this->keys[$key])) {
return null; return null;
@ -88,23 +96,28 @@ abstract class Message {
return $this->keys[$key]; return $this->keys[$key];
} }
public function getVariables() { public function getVariables()
{
return $this->variables; return $this->variables;
} }
public function getActionID() { public function getActionID()
{
return $this->getKey('ActionID'); return $this->getKey('ActionID');
} }
public function getKeys() { public function getKeys()
{
return $this->keys; return $this->keys;
} }
private function serializeVariable($key, $value) { private function serializeVariable($key, $value)
{
return "Variable: $key=$value"; return "Variable: $key=$value";
} }
protected function setSanitizedKey($key, $value) { protected function setSanitizedKey($key, $value)
{
$key = strtolower((string) $key); $key = strtolower((string) $key);
$_string_key = array('actionid', 'descr'); $_string_key = array('actionid', 'descr');
if (array_search($key, $_string_key) !== false) { 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 ($prefered_type == '') {
if (!isset($value) || $value === NULL || strlen($value) == 0) { if (!isset($value) || $value === null || strlen($value) == 0) {
return NULL; return null;
} else if (is_numeric($value)) { } elseif (is_numeric($value)) {
$prefered_type = 'numeric'; $prefered_type = 'numeric';
} else if (is_string($value)) { } elseif (is_string($value)) {
$prefered_type = 'string'; $prefered_type = 'string';
} else { } else {
throw new AMIException("Don't know how to convert: '" . $value . "'\n"); throw new AMIException("Don't know how to convert: '" . $value . "'\n");
@ -129,26 +143,26 @@ abstract class Message {
if ($prefered_type !== '') { if ($prefered_type !== '') {
switch ($prefered_type) { switch ($prefered_type) {
case 'string': case 'string':
if (!isset($value) || $value === NULL || strlen($value) == 0) { if (!isset($value) || $value === null || strlen($value) == 0) {
return ''; return '';
} }
if (filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) { if (filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) {
return (boolean) $value; 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; 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); return (string) htmlspecialchars($value, ENT_QUOTES);
} else { } else {
throw new AMIException("Incoming String is not sanitary. Skipping: '" . $value . "'\n"); throw new AMIException("Incoming String is not sanitary. Skipping: '" . $value . "'\n");
} }
break; break;
case 'numeric': case 'numeric':
if (!isset($value) || $value === NULL || strlen($value) == 0) { if (!isset($value) || $value === null || strlen($value) == 0) {
return 0; return 0;
} }
if (filter_var($value, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX | FILTER_FLAG_ALLOW_OCTAL)) { if (filter_var($value, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX | FILTER_FLAG_ALLOW_OCTAL)) {
return intval($value, 0); 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; return (float) $value;
} else { } else {
return (double) $value; return (double) $value;
@ -160,11 +174,13 @@ abstract class Message {
} }
} }
protected function finishMessage($message) { protected function finishMessage($message)
{
return $message . self::EOL . self::EOL; return $message . self::EOL . self::EOL;
} }
public function serialize() { public function serialize()
{
$result = array(); $result = array();
foreach ($this->getKeys() as $k => $v) { foreach ($this->getKeys() as $k => $v) {
$result[] = $k . ': ' . $v; $result[] = $k . ': ' . $v;
@ -182,7 +198,8 @@ abstract class Message {
return $mStr; return $mStr;
} }
public function setActionID($actionID) { public function setActionID($actionID)
{
if (0 == strlen($actionID)) { if (0 == strlen($actionID)) {
throw new AMIException('ActionID cannot be empty.'); throw new AMIException('ActionID cannot be empty.');
return; return;
@ -196,38 +213,44 @@ abstract class Message {
$this->setKey('ActionID', $actionID); $this->setKey('ActionID', $actionID);
} }
public function __sleep() { public function __sleep()
{
return array('lines', 'variables', 'keys', 'createdDate'); return array('lines', 'variables', 'keys', 'createdDate');
} }
public function __construct() { public function __construct()
{
$this->lines = array(); $this->lines = array();
$this->variables = array(); $this->variables = array();
$this->keys = array(); $this->keys = array();
$this->createdDate = time(); $this->createdDate = time();
} }
} }
abstract class IncomingMessage extends Message { abstract class IncomingMessage extends Message
{
protected $rawContent; protected $rawContent;
public function getEventList() { public function getEventList()
{
return $this->getKey('EventList'); return $this->getKey('EventList');
} }
public function getRawContent() { public function getRawContent()
{
return $this->rawContent; return $this->rawContent;
} }
public function __sleep() { public function __sleep()
{
$ret = parent::__sleep(); $ret = parent::__sleep();
$ret[] = 'rawContent'; $ret[] = 'rawContent';
return $ret; return $ret;
} }
public function __construct($rawContent) { public function __construct($rawContent)
{
parent::__construct(); parent::__construct();
$this->rawContent = $rawContent; $this->rawContent = $rawContent;
$lines = explode(Message::EOL, $rawContent); $lines = explode(Message::EOL, $rawContent);
@ -243,11 +266,11 @@ abstract class IncomingMessage extends Message {
} }
} }
} }
} }
// namespace FreePBX\modules\Sccp_manager\aminterface\Message; // namespace FreePBX\modules\Sccp_manager\aminterface\Message;
class LoginAction extends ActionMessage { class LoginAction extends ActionMessage
{
/** /**
* Constructor. * Constructor.
@ -257,111 +280,122 @@ class LoginAction extends ActionMessage {
* *
* @return void * @return void
*/ */
public function __construct($user, $password) { public function __construct($user, $password)
{
parent::__construct('Login'); parent::__construct('Login');
$this->setKey('Username', $user); $this->setKey('Username', $user);
$this->setKey('Secret', $password); $this->setKey('Secret', $password);
$this->setKey('Events', 'off'); // &---- $this->setKey('Events', 'off'); // &----
$this->setResponseHandler('Login'); $this->setResponseHandler('Login');
} }
} }
abstract class ActionMessage extends Message { abstract class ActionMessage extends Message
{
public function __construct($what) { public function __construct($what)
{
parent::__construct(); parent::__construct();
$this->setKey('Action', $what); $this->setKey('Action', $what);
$this->setKey('ActionID', microtime(true)); $this->setKey('ActionID', microtime(true));
} }
} }
class CommandAction extends ActionMessage { class CommandAction extends ActionMessage
public function __construct($command) { {
public function __construct($command)
{
parent::__construct('Command'); parent::__construct('Command');
$this->setKey('Command', $command); $this->setKey('Command', $command);
$this->setResponseHandler("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'); parent::__construct('Reload');
if ($module !== false) { if ($module !== false) {
$this->setKey('Module', $module); $this->setKey('Module', $module);
$this->setResponseHandler("Generic"); $this->setResponseHandler("Generic");
} }
} }
} }
class ExtensionStateListAction extends ActionMessage { class ExtensionStateListAction extends ActionMessage
{
public function __construct() { public function __construct()
{
parent::__construct('ExtensionStateList'); parent::__construct('ExtensionStateList');
$this->setKey('Segment', 'general'); $this->setKey('Segment', 'general');
$this->setKey('ResultFormat', 'command'); $this->setKey('ResultFormat', 'command');
$this->setResponseHandler("ExtensionStateList"); $this->setResponseHandler("ExtensionStateList");
} }
} }
class SCCPShowGlobalsAction extends ActionMessage { class SCCPShowGlobalsAction extends ActionMessage
{
public function __construct() public function __construct()
{ {
parent::__construct('SCCPShowGlobals'); parent::__construct('SCCPShowGlobals');
} }
} }
class SCCPShowSoftkeySetsAction extends ActionMessage { class SCCPShowSoftkeySetsAction extends ActionMessage
{
public function __construct() { public function __construct()
{
parent::__construct('SCCPShowSoftkeySets'); parent::__construct('SCCPShowSoftkeySets');
$this->setKey('Segment', 'general'); $this->setKey('Segment', 'general');
$this->setKey('ResultFormat', 'command'); $this->setKey('ResultFormat', 'command');
$this->setResponseHandler("SCCPShowSoftkeySets"); $this->setResponseHandler("SCCPShowSoftkeySets");
} }
} }
class SCCPShowDeviceAction extends ActionMessage { class SCCPShowDeviceAction extends ActionMessage
{
public function __construct($devicename) { public function __construct($devicename)
{
parent::__construct('SCCPShowDevice'); parent::__construct('SCCPShowDevice');
$this->setKey('Segment', 'general'); $this->setKey('Segment', 'general');
$this->setKey('ResultFormat', 'command'); $this->setKey('ResultFormat', 'command');
$this->setKey('DeviceName', $devicename); $this->setKey('DeviceName', $devicename);
$this->setResponseHandler("SCCPShowDevice"); $this->setResponseHandler("SCCPShowDevice");
} }
} }
class SCCPShowDevicesAction extends ActionMessage { class SCCPShowDevicesAction extends ActionMessage
{
public function __construct() { public function __construct()
{
parent::__construct('SCCPShowDevices'); parent::__construct('SCCPShowDevices');
$this->setKey('Segment', 'general'); $this->setKey('Segment', 'general');
$this->setKey('ResultFormat', 'command'); $this->setKey('ResultFormat', 'command');
$this->setResponseHandler("SCCPShowDevices"); $this->setResponseHandler("SCCPShowDevices");
} }
} }
class SCCPTokenAckAction extends ActionMessage { class SCCPTokenAckAction extends ActionMessage
{
public function __construct($DeviceName) { public function __construct($DeviceName)
{
parent::__construct('SCCPTokenAck'); parent::__construct('SCCPTokenAck');
$this->setKey('DeviceId', $DeviceName); $this->setKey('DeviceId', $DeviceName);
$this->setResponseHandler("SCCPGeneric"); $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'); parent::__construct('SCCPDeviceRestart');
$this->setResponseHandler("SCCPGeneric"); $this->setResponseHandler("SCCPGeneric");
if (empty($Type)) { if (empty($Type)) {
@ -374,12 +408,11 @@ class SCCPDeviceRestartAction extends ActionMessage {
throw new Exception('Param2 has to be one of \'restart\', \'full\', \'reset\'.'); throw new Exception('Param2 has to be one of \'restart\', \'full\', \'reset\'.');
} }
} }
} }
class SCCPConfigMetaDataAction extends ActionMessage class SCCPConfigMetaDataAction extends ActionMessage
{ {
public function __construct($segment=false) public function __construct($segment = false)
{ {
parent::__construct('SCCPConfigMetaData'); parent::__construct('SCCPConfigMetaData');
if ($segment != false) { if ($segment != false) {
@ -388,4 +421,3 @@ class SCCPConfigMetaDataAction extends ActionMessage
$this->setResponseHandler("SCCPGeneric"); $this->setResponseHandler("SCCPGeneric");
} }
} }

View file

@ -14,17 +14,20 @@ namespace FreePBX\modules\Sccp_manager\aminterface;
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 $_events;
protected $_completed; protected $_completed;
protected $keys; protected $keys;
public function isComplete() { public function isComplete()
{
return $this->_completed; return $this->_completed;
} }
public function __sleep() { public function __sleep()
{
$ret = parent::__sleep(); $ret = parent::__sleep();
$ret[] = '_completed'; $ret[] = '_completed';
$ret[] = '_events'; $ret[] = '_events';
@ -34,8 +37,7 @@ abstract class Response extends IncomingMessage {
public function addEvent($event) public function addEvent($event)
{ {
$this->_events[] = $event; $this->_events[] = $event;
if ( if (stristr($event->getEventList(), 'complete') !== false
stristr($event->getEventList(), 'complete') !== false
|| stristr($event->getName(), 'complete') !== false || stristr($event->getName(), 'complete') !== false
|| stristr($event->getName(), 'DBGetResponse') !== 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); $lines = explode(Message::EOL, $_rawContent);
foreach ($_fields as $key => $value) { foreach ($_fields as $key => $value) {
foreach ($lines as $data) { foreach ($lines as $data) {
@ -83,37 +86,42 @@ abstract class Response extends IncomingMessage {
} }
} }
public function __construct($rawContent) { public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
$this->_events = array(); $this->_events = array();
$this->_eventsCount = 0; $this->_eventsCount = 0;
$this->_completed = !$this->isList(); $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); parent::__construct($rawContent);
// print_r('<br>---- r --<br>'); // print_r('<br>---- r --<br>');
// print_r($rawContent); // print_r($rawContent);
} }
} }
class Login_Response extends Response { class Login_Response extends Response
{
public function __construct($rawContent) { public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
return $this->isSuccess(); return $this->isSuccess();
} }
} }
class Command_Response extends Response { class Command_Response extends Response
{
private $_temptable; private $_temptable;
public function __construct($rawContent) { public function __construct($rawContent)
{
// print_r('<br>---- r --<br>'); // print_r('<br>---- r --<br>');
// print_r($rawContent); // print_r($rawContent);
// print_r('<br>---- re --<br>'); // print_r('<br>---- re --<br>');
@ -126,25 +134,26 @@ class Command_Response extends Response {
if (is_array($content)) { if (is_array($content)) {
switch (strtolower($content[0])) { switch (strtolower($content[0])) {
case 'output': case 'output':
$_tmp_str = trim(substr($line,7)); $_tmp_str = trim(substr($line, 7));
if (!empty($_tmp_str)){ if (!empty($_tmp_str)) {
$this->_temptable['output'][]= trim(substr($line,7)); $this->_temptable['output'][]= trim(substr($line, 7));
} }
break; break;
default: default:
$this->_temptable[$content[0]][]= trim(substr($line,strlen($content[0])+1)); $this->_temptable[$content[0]][]= trim(substr($line, strlen($content[0])+1));
break; break;
} }
} }
} }
if (!empty($this->_temptable)){ if (!empty($this->_temptable)) {
$this->setKey('output', 'array'); $this->setKey('output', 'array');
} }
$this->_completed = $this->isSuccess(); $this->_completed = $this->isSuccess();
// return $this->isSuccess(); // return $this->isSuccess();
} }
public function getResult() { public function getResult()
{
if (stristr($this->getKey('output'), 'array') !== false) { if (stristr($this->getKey('output'), 'array') !== false) {
$result = $this->_temptable; $result = $this->_temptable;
} else { } else {
@ -152,15 +161,16 @@ class Command_Response extends Response {
} }
return $result; return $result;
} }
} }
class SCCPGeneric_Response extends Response { class SCCPGeneric_Response extends Response
{
protected $_tables; protected $_tables;
private $_temptable; private $_temptable;
public function addEvent($event) { public function addEvent($event)
{
// not eventlist (start/complete) // not eventlist (start/complete)
// print_r('<br>---- addEvent --<br>'); // print_r('<br>---- addEvent --<br>');
// print_r($event); // print_r($event);
@ -175,13 +185,13 @@ class SCCPGeneric_Response extends Response {
$this->_temptable = array(); $this->_temptable = array();
$this->_temptable['Name'] = $event->getTableName(); $this->_temptable['Name'] = $event->getTableName();
$this->_temptable['Entries'] = array(); $this->_temptable['Entries'] = array();
} else if (stristr($event->getName(), 'TableEnd') != false) { } elseif (stristr($event->getName(), 'TableEnd') != false) {
if (!is_array($this->_tables)) { if (!is_array($this->_tables)) {
$this->_tables = array(); $this->_tables = array();
} }
$this->_tables[$event->getTableName()] = $this->_temptable; $this->_tables[$event->getTableName()] = $this->_temptable;
unset($this->_temptable); unset($this->_temptable);
} else if (is_array($this->_temptable)) { } elseif (is_array($this->_temptable)) {
$this->_temptable['Entries'][] = $event; $this->_temptable['Entries'][] = $event;
} else { } else {
// add regular event // add regular event
@ -193,19 +203,19 @@ class SCCPGeneric_Response extends Response {
} }
} }
// finish eventlist // finish eventlist
if ( if (stristr($event->getEventList(), 'complete') != false || stristr($event->getName(), 'complete') != false
stristr($event->getEventList(), 'complete') != false || stristr($event->getName(), 'complete') != false
) { ) {
$this->_completed = true; $this->_completed = true;
} }
} }
protected function ConvertTableData($_tablename,$_fkey,$_fields) { protected function ConvertTableData($_tablename, $_fkey, $_fields)
{
$_rawtable = $this->Table2Array($_tablename); $_rawtable = $this->Table2Array($_tablename);
$result = array(); $result = array();
foreach ($_rawtable as $_row) { foreach ($_rawtable as $_row) {
$all_key_ok = true; $all_key_ok = true;
if (is_array($_fkey)){ if (is_array($_fkey)) {
foreach ($_fkey as $_fid) { foreach ($_fkey as $_fid) {
if (empty($_row[$_fid])) { if (empty($_row[$_fid])) {
$all_key_ok = false; $all_key_ok = false;
@ -233,14 +243,15 @@ class SCCPGeneric_Response extends Response {
return $result; return $result;
} }
protected function ConvertEventData($_fkey,$_fields) { protected function ConvertEventData($_fkey, $_fields)
{
$result = array(); $result = array();
foreach ($this->_events as $_row) { foreach ($this->_events as $_row) {
$all_key_ok = true; $all_key_ok = true;
$tmp_result = $_row->getKeys(); $tmp_result = $_row->getKeys();
$set_name = array(); $set_name = array();
if (is_array($_fkey)){ if (is_array($_fkey)) {
foreach ($_fkey as $_fid) { foreach ($_fkey as $_fid) {
if (empty($tmp_result[$_fid])) { if (empty($tmp_result[$_fid])) {
$all_key_ok = false; $all_key_ok = false;
@ -284,7 +295,7 @@ class SCCPGeneric_Response extends Response {
public function Table2Array($tablename = '') public function Table2Array($tablename = '')
{ {
$result =array(); $result =array();
if ( !is_string($tablename) || empty($tablename)){ if (!is_string($tablename) || empty($tablename)) {
return false; return false;
} }
if ($this->hasTable()) { if ($this->hasTable()) {
@ -303,7 +314,7 @@ class SCCPGeneric_Response extends Response {
foreach ($this->_events as $trow) { foreach ($this->_events as $trow) {
$tmp_result = $trow->getKeys(); $tmp_result = $trow->getKeys();
if (is_array($tmp_result)) { if (is_array($tmp_result)) {
$result = array_merge($result,$tmp_result); $result = array_merge($result, $tmp_result);
} else { } else {
$result [] = $tmp_result; $result [] = $tmp_result;
} }
@ -331,28 +342,30 @@ class SCCPGeneric_Response extends Response {
throw new AMIException("No JSON Key found to return."); throw new AMIException("No JSON Key found to return.");
} }
public function __construct($rawContent) { public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
$_fields = array("EventList" => "EventList:", "Message" => "Message:"); $_fields = array("EventList" => "EventList:", "Message" => "Message:");
// $this->getVariable($rawContent, $_fields); // $this->getVariable($rawContent, $_fields);
$this->_completed = !$this->isList(); $this->_completed = !$this->isList();
} }
public function getResult() { public function getResult()
{
if ($this->getKey('JSON') != null) { if ($this->getKey('JSON') != null) {
$result = $this->getJSON(); $result = $this->getJSON();
} else { } else {
$result = $this->getMessage (); $result = $this->getMessage();
} }
return $result; return $result;
} }
} }
class SCCPJSON_Response extends Response { class SCCPJSON_Response extends Response
{
public function __construct($rawContent) { public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
$_fields = array("DataType" => "DataType:", "JSONRAW" => "JSON:"); $_fields = array("DataType" => "DataType:", "JSONRAW" => "JSON:");
$this->getVariable($rawContent, $_fields); $this->getVariable($rawContent, $_fields);
@ -362,71 +375,93 @@ class SCCPJSON_Response extends Response {
} }
return $this->isSuccess(); return $this->isSuccess();
} }
} }
class SCCPShowSoftkeySets_Response extends SCCPGeneric_Response { class SCCPShowSoftkeySets_Response extends SCCPGeneric_Response
public function __construct($rawContent) { {
public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
} }
public function getResult() { public function getResult()
{
$_fields = array('description'=>'description','label'=>'label','lblid'=>'lblid'); $_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; return $result;
} }
} }
class SCCPShowDevices_Response extends SCCPGeneric_Response { class SCCPShowDevices_Response extends SCCPGeneric_Response
public function __construct($rawContent) { {
public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
} }
public function getResult() { public function getResult()
{
$_fields = array('mac'=>'mac','address'=>'address','descr'=>'descr','regstate'=>'status', $_fields = array('mac'=>'mac','address'=>'address','descr'=>'descr','regstate'=>'status',
'token'=>'token','act'=>'act', 'lines'=>'lines','nat'=>'nat','regtime'=>'regtime'); '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; return $result;
} }
} }
class SCCPShowDevice_Response extends SCCPGeneric_Response { class SCCPShowDevice_Response extends SCCPGeneric_Response
public function __construct($rawContent) { {
public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
} }
public function getResult() { public function getResult()
{
$result = array(); $result = array();
$result = $this->Events2Array(); $result = $this->Events2Array();
$result['Buttons'] = $this->ConvertTableData('Buttons', array('id'), $result['Buttons'] = $this->ConvertTableData(
'Buttons',
array('id'),
array('id'=>'id','channelobjecttype'=>'channelobjecttype','inst'=>'inst', array('id'=>'id','channelobjecttype'=>'channelobjecttype','inst'=>'inst',
'typestr'=>'typestr','type'=>'type','pendupdt'=>'pendupdt','penddel'=>'penddel', 'default'=>'default')); 'typestr'=>'typestr',
$result['SpeeddialButtons'] = $this->ConvertTableData('Buttons', array('id'), 'type'=>'type',
array('id'=>'id','channelobjecttype'=>'channelobjecttype','name'=>'name','number'=>'number','hint'=>'hint')); 'pendupdt'=>'pendupdt',
$result['CallStatistics'] = $this->ConvertTableData('CallStatistics', array('type'), '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', array('type'=>'type','channelobjecttype'=>'channelobjecttype','calls'=>'calls','pcktsnt'=>'pcktsnt','pcktrcvd'=>'pcktrcvd',
'lost'=>'lost','jitter'=>'jitter','latency'=>'latency', 'quality'=>'quality','avgqual'=>'avgqual','meanqual'=>'meanqual', 'lost'=>'lost','jitter'=>'jitter','latency'=>'latency', 'quality'=>'quality','avgqual'=>'avgqual','meanqual'=>'meanqual',
'maxqual'=>'maxqual','rconceal'=>'rconceal','sconceal'=>'sconceal')); 'maxqual'=>'maxqual',
$result['SCCP_Vendor'] = Array('vendor' => strtok($result['skinnyphonetype'], ' '), 'model' => strtok('('), 'rconceal'=>'rconceal',
'sconceal'=>'sconceal')
);
$result['SCCP_Vendor'] = array('vendor' => strtok($result['skinnyphonetype'], ' '), 'model' => strtok('('),
'model_id' => strtok(')'), 'vendor_addon' => strtok($result['configphonetype'], ' '), 'model_id' => strtok(')'), 'vendor_addon' => strtok($result['configphonetype'], ' '),
'model_addon' => strtok(' ')); 'model_addon' => strtok(' '));
if (empty($result['SCCP_Vendor']['vendor']) || $result['SCCP_Vendor']['vendor'] == 'Undefined') { 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_id' => '', 'vendor_addon' => $result['SCCP_Vendor']['vendor_addon'],
'model_addon' => $result['SCCP_Vendor']['model_addon']); 'model_addon' => $result['SCCP_Vendor']['model_addon']);
} }
$result['MAC_Address'] =$result['macaddress']; $result['MAC_Address'] =$result['macaddress'];
return $result; return $result;
} }
} }
class ExtensionStateList_Response extends SCCPGeneric_Response { class ExtensionStateList_Response extends SCCPGeneric_Response
public function __construct($rawContent) { {
public function __construct($rawContent)
{
parent::__construct($rawContent); parent::__construct($rawContent);
} }
public function getResult() { public function getResult()
$result = $this->ConvertEventData(array('exten','context'),array('exten','context','hint','status','statustext')); {
$result = $this->ConvertEventData(array('exten','context'), array('exten','context','hint','status','statustext'));
return $result; return $result;
} }
} }

View file

@ -10,8 +10,8 @@
namespace FreePBX\modules\Sccp_manager; namespace FreePBX\modules\Sccp_manager;
class aminterface
class aminterface { {
var $_socket; var $_socket;
var $_error; var $_error;
@ -29,7 +29,8 @@ class aminterface {
private $_responseFactory; private $_responseFactory;
private $debug_level = 1; private $debug_level = 1;
public function load_subspace($parent_class = null) { public function load_subspace($parent_class = null)
{
$driverNamespace = "\\FreePBX\\Modules\\Sccp_manager\\aminterface"; $driverNamespace = "\\FreePBX\\Modules\\Sccp_manager\\aminterface";
$drivers = array('Message' => 'Message.class.php', 'Response' => 'Response.class.php', 'Event' => 'Event.class.php'); $drivers = array('Message' => 'Message.class.php', 'Response' => 'Response.class.php', 'Event' => 'Event.class.php');
@ -37,7 +38,6 @@ class aminterface {
$class = $driverNamespace . "\\" . $key; $class = $driverNamespace . "\\" . $key;
$driver = __DIR__ . "/" . $value; $driver = __DIR__ . "/" . $value;
if (!class_exists($class, false)) { if (!class_exists($class, false)) {
if (file_exists($driver)) { if (file_exists($driver)) {
include(__DIR__ . "/" . $value); include(__DIR__ . "/" . $value);
} else { } else {
@ -47,7 +47,8 @@ class aminterface {
} }
} }
public function __construct($parent_class = null) { public function __construct($parent_class = null)
{
global $amp_conf; global $amp_conf;
$this->paren_class = $parent_class; $this->paren_class = $parent_class;
$this->_socket = false; $this->_socket = false;
@ -75,19 +76,23 @@ class aminterface {
} }
} }
public function status() { public function status()
{
if ($this->_config['enabled']) { if ($this->_config['enabled']) {
return true; return true;
} else {return false;} } else {
return false;
}
} }
public function info() { public function info()
{
$Ver = '13.0.4'; $Ver = '13.0.4';
if ($this->_config['enabled']) { if ($this->_config['enabled']) {
return Array('Version' => $Ver, return array('Version' => $Ver,
'about' => 'AMI data ver: ' . $Ver, 'test' => get_declared_classes()); 'about' => 'AMI data ver: ' . $Ver, 'test' => get_declared_classes());
} else { } else {
return Array('Version' => $Ver, return array('Version' => $Ver,
'about' => 'Disabled AMI ver: ' . $Ver); 'about' => 'Disabled AMI ver: ' . $Ver);
} }
} }
@ -96,15 +101,20 @@ class aminterface {
* Opens a tcp connection to ami. * Opens a tcp connection to ami.
* *
*/ */
public function open() { public function open()
{
$cString = $this->_config['tsoket'] . $this->_config['host'] . ':' . $this->_config['port']; $cString = $this->_config['tsoket'] . $this->_config['host'] . ':' . $this->_config['port'];
$this->_context = stream_context_create(); $this->_context = stream_context_create();
$errno = 0; $errno = 0;
$errstr = ''; $errstr = '';
$this->_ProcessingMessage = ''; $this->_ProcessingMessage = '';
$this->_socket = @stream_socket_client( $this->_socket = @stream_socket_client(
$cString, $errno, $errstr, $cString,
$this->_config['timeout'], STREAM_CLIENT_CONNECT, $this->_context $errno,
$errstr,
$this->_config['timeout'],
STREAM_CLIENT_CONNECT,
$this->_context
); );
if ($this->_socket === false) { if ($this->_socket === false) {
$this->_errorException('Error connecting to ami: ' . $errstr . $cString); $this->_errorException('Error connecting to ami: ' . $errstr . $cString);
@ -129,13 +139,15 @@ class aminterface {
/** /**
* Closes the connection to ami. * Closes the connection to ami.
*/ */
public function close() { public function close()
{
$this->_connect_state = false; $this->_connect_state = false;
$this->_ProcessingMessage = ''; $this->_ProcessingMessage = '';
@stream_socket_shutdown($this->_socket, STREAM_SHUT_RDWR); @stream_socket_shutdown($this->_socket, STREAM_SHUT_RDWR);
} }
public function send($message) { public function send($message)
{
$messageToSend = $message->serialize(); $messageToSend = $message->serialize();
$length = strlen($messageToSend); $length = strlen($messageToSend);
$this->_countE = 0; $this->_countE = 0;
@ -171,7 +183,8 @@ class aminterface {
$this->_errorException("Read waittime: " . ($this->socket_param['timeout']) . " exceeded (timeout).\n"); $this->_errorException("Read waittime: " . ($this->socket_param['timeout']) . " exceeded (timeout).\n");
} }
protected function getRelated($message) { protected function getRelated($message)
{
$ret = false; $ret = false;
$id = 0; $id = 0;
$id = $message->getActionID('ActionID'); $id = $message->getActionID('ActionID');
@ -185,11 +198,13 @@ class aminterface {
return $ret; return $ret;
} }
private function _messageToEvent($msg) { private function _messageToEvent($msg)
{
return $this->_eventFromRaw($msg); return $this->_eventFromRaw($msg);
} }
protected function getMessages() { protected function getMessages()
{
$msgs = array(); $msgs = array();
// Read something. // Read something.
$read = @fread($this->_socket, 65535); $read = @fread($this->_socket, 65535);
@ -200,28 +215,30 @@ class aminterface {
if ($read == "") { if ($read == "") {
usleep(100); usleep(100);
} else { } else {
$this->_msgToDebug(98,'--- Not Empy AMI MSG --- '); $this->_msgToDebug(98, '--- Not Empy AMI MSG --- ');
} }
$this->_ProcessingMessage .= $read; $this->_ProcessingMessage .= $read;
$this->_DumpMessage .= $read; $this->_DumpMessage .= $read;
while (($marker = strpos($this->_ProcessingMessage, aminterface\Message::EOM))) { while (($marker = strpos($this->_ProcessingMessage, aminterface\Message::EOM))) {
$msg = substr($this->_ProcessingMessage, 0, $marker); $msg = substr($this->_ProcessingMessage, 0, $marker);
$this->_ProcessingMessage = substr( $this->_ProcessingMessage = substr(
$this->_ProcessingMessage, $marker + strlen(aminterface\Message::EOM) $this->_ProcessingMessage,
$marker + strlen(aminterface\Message::EOM)
); );
$msgs[] = $msg; $msgs[] = $msg;
} }
return $msgs; return $msgs;
} }
public function process() { public function process()
{
$msgs = $this->getMessages(); $msgs = $this->getMessages();
$this->_msgToDebug(90,$msgs); $this->_msgToDebug(90, $msgs);
$this->_countE++; $this->_countE++;
if ($this->_countE > 10000) { if ($this->_countE > 10000) {
$this->_msgToDebug(9,'--- Procecc Die, Dump --- '); $this->_msgToDebug(9, '--- Procecc Die, Dump --- ');
$this->_msgToDebug(9,$this->_DumpMessage); $this->_msgToDebug(9, $this->_DumpMessage);
$this->_msgToDebug(9,'--- END Procecc Die, Dump --- '); $this->_msgToDebug(9, '--- END Procecc Die, Dump --- ');
die(); die();
} }
foreach ($msgs as $aMsg) { foreach ($msgs as $aMsg) {
@ -230,13 +247,13 @@ class aminterface {
if (($resPos !== false) && (($resPos < $evePos) || $evePos === false)) { if (($resPos !== false) && (($resPos < $evePos) || $evePos === false)) {
$response = $this->_msgToResponse($aMsg); // resp Ok $response = $this->_msgToResponse($aMsg); // resp Ok
$this->_incomingQueue[$this->_lastActionId] = $response; $this->_incomingQueue[$this->_lastActionId] = $response;
} else if ($evePos !== false) { } elseif ($evePos !== false) {
$event = $this->_messageToEvent($aMsg); // Event Ok $event = $this->_messageToEvent($aMsg); // Event Ok
$this->_msgToDebug(99,'--- Response Type 2 --- '); $this->_msgToDebug(99, '--- Response Type 2 --- ');
$this->_msgToDebug(99,$aMsg); $this->_msgToDebug(99, $aMsg);
$this->_msgToDebug(99,'--- Event Response Type 2 --- '); $this->_msgToDebug(99, '--- Event Response Type 2 --- ');
$this->_msgToDebug(99,$event); $this->_msgToDebug(99, $event);
if ($event != null) { if ($event != null) {
$response = $this->findResponse($event); $response = $this->findResponse($event);
@ -252,7 +269,7 @@ class aminterface {
} else { } else {
// broken ami.. sending a response with events without // broken ami.. sending a response with events without
// Event and ActionId // Event and ActionId
$this->_msgToDebug(1,'resp broken ami'); $this->_msgToDebug(1, 'resp broken ami');
$bMsg = 'Event: ResponseEvent' . "\r\n"; $bMsg = 'Event: ResponseEvent' . "\r\n";
$bMsg .= 'ActionId: ' . $this->_lastActionId . "\r\n" . $aMsg; $bMsg .= 'ActionId: ' . $this->_lastActionId . "\r\n" . $aMsg;
$event = $this->_messageToEvent($bMsg); $event = $this->_messageToEvent($bMsg);
@ -261,10 +278,10 @@ class aminterface {
} }
} }
// print_r('<br>--- EProcecc ----------<br>'); // print_r('<br>--- EProcecc ----------<br>');
} }
private function _msgToDebug($level, $msg) { private function _msgToDebug($level, $msg)
{
if ($level > $this->debug_level) { if ($level > $this->debug_level) {
return; return;
} }
@ -273,7 +290,8 @@ class aminterface {
print_r('<br>'); print_r('<br>');
} }
private function _msgToResponse($msg) { private function _msgToResponse($msg)
{
// print_r("<br>------------hmsg----------<br>"); // print_r("<br>------------hmsg----------<br>");
// print_r($this->_lastActionClass); // print_r($this->_lastActionClass);
// print_r($this->_lastRequestedResponseHandler); // 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; $_className = false;
$responseclass = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\Generic_Response'; $responseclass = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\Generic_Response';
if ($responseHandler != false) { if ($responseHandler != false) {
$_className = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\' . $responseHandler . '_Response'; $_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'; $_className = '\\FreePBX\\modules\\Sccp_manager\\' . substr(get_class($requestingaction), 20, -6) . '_Response';
} }
if ($_className) { if ($_className) {
if (class_exists($_className, true)) { if (class_exists($_className, true)) {
$responseclass = $_className; $responseclass = $_className;
} else if ($responseHandler != false) { } elseif ($responseHandler != false) {
$this->_errorException('Response Class ' . $_className . ' requested via responseHandler, could not be found'); $this->_errorException('Response Class ' . $_className . ' requested via responseHandler, could not be found');
} }
} }
return new $responseclass($message); return new $responseclass($message);
} }
protected function _errorException($msg) { protected function _errorException($msg)
{
$this->_error[] = $msg; $this->_error[] = $msg;
} }
@ -325,7 +345,8 @@ class aminterface {
* Replace or dublicate to AMI interface * Replace or dublicate to AMI interface
*/ */
public function _eventFromRaw($message) { public function _eventFromRaw($message)
{
$eventStart = strpos($message, 'Event: ') + 7; $eventStart = strpos($message, 'Event: ') + 7;
if ($eventStart > strlen($message)) { if ($eventStart > strlen($message)) {
@ -344,20 +365,21 @@ class aminterface {
return new $className($message); 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'; $responseclass = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\Response';
$_className = false; $_className = false;
if ($responseHandler != false) { if ($responseHandler != false) {
$_className = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\' . $responseHandler . '_Response'; $_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'; $_className = '\\FreePBX\\modules\\Sccp_manager\\aminterface\\' . substr(get_class($requestingaction), 20, -6) . '_Response';
} }
if ($_className) { if ($_className) {
if (class_exists($_className, true)) { if (class_exists($_className, true)) {
$responseclass = $_className; $responseclass = $_className;
} else if ($responseHandler != false) { } elseif ($responseHandler != false) {
throw new AMIException('Response Class ' . $_className . ' requested via responseHandler, could not be found'); throw new AMIException('Response Class ' . $_className . ' requested via responseHandler, could not be found');
} }
} }
@ -368,7 +390,8 @@ class aminterface {
} }
// protected function findResponse(IncomingMessage $message) { // protected function findResponse(IncomingMessage $message) {
protected function findResponse($message) { protected function findResponse($message)
{
$actionId = $message->getActionId(); $actionId = $message->getActionId();
if (isset($this->_incomingQueue[$actionId])) { if (isset($this->_incomingQueue[$actionId])) {
return $this->_incomingQueue[$actionId]; return $this->_incomingQueue[$actionId];
@ -376,7 +399,8 @@ class aminterface {
return false; return false;
} }
protected function dispatch($message) { protected function dispatch($message)
{
print_r("<br>------------dispatch----------<br>"); print_r("<br>------------dispatch----------<br>");
print_r($message); print_r($message);
return false; return false;
@ -391,25 +415,26 @@ class aminterface {
} }
if ($listener instanceof \Closure) { if ($listener instanceof \Closure) {
$listener($message); $listener($message);
} else if (is_array($listener)) { } elseif (is_array($listener)) {
$listener[0]->$listener[1]($message); $listener[0]->$listener[1]($message);
} else { } else {
$listener->handle($message); $listener->handle($message);
} }
} }
print_r("<br>------------E dispatch----------<br>"); print_r("<br>------------E dispatch----------<br>");
} }
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
function core_list_all_exten($keyfld = '', $filter = array()) { function core_list_all_exten($keyfld = '', $filter = array())
{
$result = array(); $result = array();
return $result; return $result;
} }
//-------------------Adaptive Function ------------------------------------------------------------ //-------------------Adaptive Function ------------------------------------------------------------
function core_list_hints() { function core_list_hints()
{
$result = array(); $result = array();
if ($this->_connect_state) { if ($this->_connect_state) {
$_action = new \FreePBX\modules\Sccp_manager\aminterface\ExtensionStateListAction(); $_action = new \FreePBX\modules\Sccp_manager\aminterface\ExtensionStateListAction();
@ -424,7 +449,8 @@ class aminterface {
return $result; return $result;
} }
function core_list_all_hints() { function core_list_all_hints()
{
$result = array(); $result = array();
if ($this->_connect_state) { if ($this->_connect_state) {
$_action = new \FreePBX\modules\Sccp_manager\aminterface\ExtensionStateListAction(); $_action = new \FreePBX\modules\Sccp_manager\aminterface\ExtensionStateListAction();
@ -439,7 +465,8 @@ class aminterface {
return $result; return $result;
} }
// --------------------- SCCP Comands // --------------------- SCCP Comands
function sccp_list_keysets() { function sccp_list_keysets()
{
$result = array(); $result = array();
if ($this->_connect_state) { if ($this->_connect_state) {
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowSoftkeySetsAction(); $_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowSoftkeySetsAction();
@ -451,7 +478,8 @@ class aminterface {
} }
return $result; return $result;
} }
function sccp_get_active_device() { function sccp_get_active_device()
{
$result = array(); $result = array();
if ($this->_connect_state) { if ($this->_connect_state) {
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowDevicesAction(); $_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowDevicesAction();
@ -463,7 +491,8 @@ class aminterface {
} }
return $result; return $result;
} }
function sccp_getdevice_info($devicename) { function sccp_getdevice_info($devicename)
{
$result = array(); $result = array();
if ($this->_connect_state) { if ($this->_connect_state) {
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowDeviceAction($devicename); $_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPShowDeviceAction($devicename);
@ -473,12 +502,13 @@ class aminterface {
} }
return $result; return $result;
} }
function sccp_device_reset($devicename,$action = '') { function sccp_device_reset($devicename, $action = '')
{
if ($this->_connect_state) { if ($this->_connect_state) {
if ($action == 'tokenack') { if ($action == 'tokenack') {
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPTokenAckAction($devicename); $_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPTokenAckAction($devicename);
} else { } 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); $_response = $this->send($_action);
$result['data'] = 'Device :'.$devicename.' Result: '.$_response->getMessage(); $result['data'] = 'Device :'.$devicename.' Result: '.$_response->getMessage();
@ -489,7 +519,8 @@ class aminterface {
} }
//------------------- Core Comands ---- //------------------- Core Comands ----
function core_sccp_reload() { function core_sccp_reload()
{
$result = array(); $result = array();
if ($this->_connect_state) { if ($this->_connect_state) {
$_action = new \FreePBX\modules\Sccp_manager\aminterface\ReloadAction('chan_sccp'); $_action = new \FreePBX\modules\Sccp_manager\aminterface\ReloadAction('chan_sccp');
@ -499,7 +530,8 @@ class aminterface {
} }
return $result; return $result;
} }
function getSCCPVersion() { function getSCCPVersion()
{
$result = array(); $result = array();
if ($this->_connect_state) { if ($this->_connect_state) {
$_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPConfigMetaDataAction(); $_action = new \FreePBX\modules\Sccp_manager\aminterface\SCCPConfigMetaDataAction();
@ -509,7 +541,8 @@ class aminterface {
return $result; return $result;
} }
function getRealTimeStatus() { function getRealTimeStatus()
{
$result = array(); $result = array();
if ($this->_connect_state) { if ($this->_connect_state) {
$_action = new \FreePBX\modules\Sccp_manager\aminterface\CommandAction('realtime mysql status'); $_action = new \FreePBX\modules\Sccp_manager\aminterface\CommandAction('realtime mysql status');
@ -523,5 +556,4 @@ class aminterface {
} }
return $result; return $result;
} }
} }

View file

@ -10,18 +10,21 @@
namespace FreePBX\modules\Sccp_manager; namespace FreePBX\modules\Sccp_manager;
class oldinterface { class oldinterface
{
var $error; var $error;
public function __construct($parent_class = null) { public function __construct($parent_class = null)
{
$this->paren_class = $parent_class; $this->paren_class = $parent_class;
$this->error = ""; $this->error = "";
} }
public function info() { public function info()
{
$Ver = '13.0.4'; $Ver = '13.0.4';
return Array('Version' => $Ver, return array('Version' => $Ver,
'about' => 'Old interface data ver: ' . $Ver); 'about' => 'Old interface data ver: ' . $Ver);
} }
@ -34,7 +37,8 @@ class oldinterface {
* Replace or dublicate to AMI interface * Replace or dublicate to AMI interface
*/ */
public function sccp_core_commands($params = array()) { public function sccp_core_commands($params = array())
{
global $astman; global $astman;
$cmd_list = array('get_softkey' => array('cmd' => "sccp show softkeyssets", 'param' => ''), $cmd_list = array('get_softkey' => array('cmd' => "sccp show softkeyssets", 'param' => ''),
'get_version' => array('cmd' => "sccp show version", 'param' => ''), 'get_version' => array('cmd' => "sccp show version", 'param' => ''),
@ -77,7 +81,6 @@ class oldinterface {
if (!empty($params['name'])) { if (!empty($params['name'])) {
$astman->Command('sccp device ' . $params['name'] . ' ' . $msg); $astman->Command('sccp device ' . $params['name'] . ' ' . $msg);
} else { } else {
} }
break; break;
default: default:
@ -89,7 +92,8 @@ class oldinterface {
return $result; return $result;
} }
public function sccp_getdevice_info($dev_id) { public function sccp_getdevice_info($dev_id)
{
if (empty($dev_id)) { if (empty($dev_id)) {
return array(); return array();
} }
@ -113,9 +117,9 @@ class oldinterface {
} else { } else {
$res2 = ''; $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') { 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 $res4;
// return array(); // 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. * 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_key = array();
$hint_all = $this->sccp_list_all_hints(); $hint_all = $this->sccp_list_all_hints();
foreach ($hint_all as $value) { foreach ($hint_all as $value) {
@ -143,7 +148,8 @@ class oldinterface {
return $hint_key; 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 = $this->sccp_core_commands(array('cmd' => 'get_hints'));
$ast_out = preg_split("/[\n]/", $ast_out['data']); $ast_out = preg_split("/[\n]/", $ast_out['data']);
$ast_key = array(); $ast_key = array();
@ -171,7 +177,8 @@ class oldinterface {
return $ast_key; return $ast_key;
} }
public function sccp_realtime_status() { public function sccp_realtime_status()
{
$ast_res = array(); $ast_res = array();
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_realtime_status')); $ast_out = $this->sccp_core_commands(array('cmd' => 'get_realtime_status'));
$ast_out = preg_split("/[\n]/", $ast_out['data']); $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 ? // !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(); $res = $this->getSCCPVersion();
if (empty($res)) { if (empty($res)) {
return 0; return 0;
@ -220,7 +228,8 @@ class oldinterface {
// return $res["vCode"]; // return $res["vCode"];
} }
public function getSCCPVersion() { public function getSCCPVersion()
{
$res = $this->getChanSCCPVersion(); $res = $this->getChanSCCPVersion();
if (empty($res)) { if (empty($res)) {
$res = $this->getCoreSCCPVersion(); $res = $this->getCoreSCCPVersion();
@ -228,7 +237,8 @@ class oldinterface {
return $res; return $res;
} }
function getCoreSCCPVersion() { function getCoreSCCPVersion()
{
$result = array(); $result = array();
$ast_out = $this->sccp_version(); $ast_out = $this->sccp_version();
$result["Version"] = $ast_out[0]; $result["Version"] = $ast_out[0];
@ -252,9 +262,10 @@ class oldinterface {
return $result; return $result;
} }
private function sccp_version() { private function sccp_version()
{
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_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'); return array('-1');
} }
if (preg_match("/Release.*\(/", $ast_out['data'], $matches)) { if (preg_match("/Release.*\(/", $ast_out['data'], $matches)) {
@ -265,7 +276,8 @@ class oldinterface {
} }
} }
function getChanSCCPVersion() { function getChanSCCPVersion()
{
global $astman; global $astman;
$result = array(); $result = array();
if (!$astman) { if (!$astman) {
@ -285,11 +297,9 @@ class oldinterface {
$result["vCode"] = 400; $result["vCode"] = 400;
if ($version_parts[1] == "1") { if ($version_parts[1] == "1") {
$result["vCode"] = 410; $result["vCode"] = 410;
} else } elseif ($version_parts[1] == "2") {
if ($version_parts[1] == "2") {
$result["vCode"] = 420; $result["vCode"] = 420;
} else } elseif ($version_parts[1] >= "3") {
if ($version_parts[1] >= "3") {
$result["vCode"] = 430; $result["vCode"] = 430;
} }
} }
@ -338,7 +348,8 @@ class oldinterface {
return $result; return $result;
} }
public function sccp_list_keysets() { public function sccp_list_keysets()
{
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_softkey')); $ast_out = $this->sccp_core_commands(array('cmd' => 'get_softkey'));
$ast_out = preg_split("/[\n]/", $ast_out['data']); $ast_out = preg_split("/[\n]/", $ast_out['data']);
@ -364,7 +375,8 @@ class oldinterface {
return $ast_key; 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 = $this->sccp_core_commands(array('cmd' => 'get_device'));
$ast_out = preg_split("/[\n]/", $ast_out['data']); $ast_out = preg_split("/[\n]/", $ast_out['data']);
@ -397,7 +409,7 @@ class oldinterface {
// list ($descr, $address, $devname, $status, $junk) = $line_arr; // list ($descr, $address, $devname, $status, $junk) = $line_arr;
// if (strlen($ast_key[$devname]) < 1) { // if (strlen($ast_key[$devname]) < 1) {
if (strlen($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])) { if (isset($ast_key[$devname])) {
@ -418,7 +430,8 @@ class oldinterface {
* Replace sccp_core_commands($params = array()) { * Replace sccp_core_commands($params = array()) {
*/ */
private function astman_retrieveJSFromMetaData($segment = "") { private function astman_retrieveJSFromMetaData($segment = "")
{
global $astman; global $astman;
$params = array(); $params = array();
if ($segment != "") { if ($segment != "") {
@ -434,7 +447,8 @@ class oldinterface {
} }
} }
private function strpos_array($haystack, $needles) { private function strpos_array($haystack, $needles)
{
if (is_array($needles)) { if (is_array($needles)) {
foreach ($needles as $str) { foreach ($needles as $str) {
if (is_array($str)) { if (is_array($str)) {
@ -442,22 +456,25 @@ class oldinterface {
} else { } else {
$pos = strpos($haystack, $str); $pos = strpos($haystack, $str);
} }
if ($pos !== FALSE) { if ($pos !== false) {
return $pos; return $pos;
} }
} }
} else { } else {
return strpos($haystack, $needles); return strpos($haystack, $needles);
} }
return FALSE; return false;
} }
private function loc_after($value, $inthat) { private function loc_after($value, $inthat)
if (!is_bool(strpos($inthat, $value))) {
if (!is_bool(strpos($inthat, $value))) {
return substr($inthat, strpos($inthat, $value) + strlen($value)); return substr($inthat, strpos($inthat, $value) + strlen($value));
} }
}
function getеtestChanSCC() { function getеtestChanSCC()
{
global $astman; global $astman;
// $action = Array('SCCPShowGlobals',); // $action = Array('SCCPShowGlobals',);
$params = array(); $params = array();
@ -472,7 +489,8 @@ class oldinterface {
/* /*
* [Segments] => ( [0] => general [1] => device [2] => line [3] => softkey ) * [Segments] => ( [0] => general [1] => device [2] => line [3] => softkey )
*/ */
function getеtestChanSCCP_GlablsInfo($Segment = '') { function getеtestChanSCCP_GlablsInfo($Segment = '')
{
global $astman; global $astman;
$params = array(); $params = array();
@ -498,5 +516,4 @@ class oldinterface {
} }
return $metadata; return $metadata;
} }
} }

View file

@ -9,27 +9,31 @@
namespace FreePBX\modules\Sccp_manager; namespace FreePBX\modules\Sccp_manager;
class dbinterface { class dbinterface
{
private $val_null = 'NONE'; /// REPLACE to null Field 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; $this->paren_class = $parent_class;
} }
public function info() { public function info()
{
$Ver = '13.0.2'; $Ver = '13.0.2';
return Array('Version' => $Ver, return array('Version' => $Ver,
'about' => 'Data access interface ver: ' . $Ver); 'about' => 'Data access interface ver: ' . $Ver);
} }
/* /*
* Core Access Function * Core Access Function
*/ */
public function get_db_SccpTableByID($dataid, $data = array(), $indexField = '') { public function get_db_SccpTableByID($dataid, $data = array(), $indexField = '')
{
$resut = array(); $resut = array();
$raw = $this->get_db_SccpTableData($dataid, $data); $raw = $this->get_db_SccpTableData($dataid, $data);
if ( empty($raw) || empty($indexField)) { if (empty($raw) || empty($indexField)) {
return $raw; return $raw;
} }
foreach ($raw as $value) { foreach ($raw as $value) {
@ -39,9 +43,10 @@ class dbinterface {
return $resut; return $resut;
} }
public function get_db_SccpTableData($dataid, $data = array()) { public function get_db_SccpTableData($dataid, $data = array())
{
if ($dataid == '') { if ($dataid == '') {
return False; return false;
} }
switch ($dataid) { switch ($dataid) {
case "SccpExtension": case "SccpExtension":
@ -49,7 +54,8 @@ class dbinterface {
$sql = "SELECT * FROM `sccpline` ORDER BY `name`"; $sql = "SELECT * FROM `sccpline` ORDER BY `name`";
$raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC); $raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC);
} else { } 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); $raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC);
} }
break; break;
@ -72,7 +78,8 @@ class dbinterface {
} }
} }
if (!empty($data['name'])) { if (!empty($data['name'])) {
$filtred = "`name`='" . $data['name']. "'";; $filtred = "`name`='" . $data['name']. "'";
;
$singlrow = true; $singlrow = true;
} }
if (!empty($data['type'])) { if (!empty($data['type'])) {
@ -141,7 +148,7 @@ class dbinterface {
$sql = 'SELECT * FROM sccpbuttonconfig WHERE ' .$sql. 'ORDER BY `instance`;'; $sql = 'SELECT * FROM sccpbuttonconfig WHERE ' .$sql. 'ORDER BY `instance`;';
$raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC); $raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC);
} else { } else {
$raw_settings = Array(); $raw_settings = array();
} }
break; break;
} }
@ -149,13 +156,15 @@ class dbinterface {
return $raw_settings; 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`"; $sql = "SELECT `keyword`, `data`, `type`, `seq` FROM `sccpsettings` ORDER BY `type`, `seq`";
$raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC); $raw_settings = sql($sql, "getAll", DB_FETCHMODE_ASSOC);
return $raw_settings; return $raw_settings;
} }
public function get_db_sysvalues() { public function get_db_sysvalues()
{
$sql = "SHOW VARIABLES LIKE '%group_concat%'"; $sql = "SHOW VARIABLES LIKE '%group_concat%'";
$raw_settings = sql($sql, "getRow", DB_FETCHMODE_ASSOC); $raw_settings = sql($sql, "getRow", DB_FETCHMODE_ASSOC);
return $raw_settings; return $raw_settings;
@ -165,7 +174,8 @@ class dbinterface {
* Get Sccp Device Model information * 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; global $db;
switch ($format_list) { switch ($format_list) {
case "model": case "model":
@ -230,7 +240,8 @@ class dbinterface {
return $raw_settings; 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 clear - Empty tabele before update
// mode update - update / replace record // mode update - update / replace record
global $db; global $db;
@ -317,16 +328,18 @@ class dbinterface {
* My be Replace by SccpTables ??! * 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'; $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; return $filename;
} }
/* /*
* Check Table structure * Check Table structure
*/ */
public function validate() { public function validate()
{
global $db; global $db;
$check_fields = array('430' => array('_hwlang' => "varchar(12)"), '431' => array('private'=> "enum('on','off')"), '433' => array('directed_pickup'=>'') ); $check_fields = array('430' => array('_hwlang' => "varchar(12)"), '431' => array('private'=> "enum('on','off')"), '433' => array('directed_pickup'=>'') );
$sql = "DESCRIBE `sccpdevice`;"; $sql = "DESCRIBE `sccpdevice`;";
@ -337,8 +350,8 @@ class dbinterface {
} }
foreach ($check_fields as $key => $value) { foreach ($check_fields as $key => $value) {
$sub_result = true; $sub_result = true;
foreach($value as $skey => $svalue) { foreach ($value as $skey => $svalue) {
if (!empty($svalue) ) { if (!empty($svalue)) {
if (empty($id_result[$skey])) { if (empty($id_result[$skey])) {
$sub_result = false; $sub_result = false;
} else { } else {
@ -361,5 +374,4 @@ class dbinterface {
return $result; return $result;
} }
} }

View file

@ -6,19 +6,23 @@
namespace FreePBX\modules\Sccp_manager; 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; $this->paren_class = $parent_class;
} }
public function info() { public function info()
{
$Ver = '13.0.3'; $Ver = '13.0.3';
return Array('Version' => $Ver, return array('Version' => $Ver,
'about' => 'Default Setings and Enums ver: ' . $Ver); 'about' => 'Default Setings and Enums ver: ' . $Ver);
} }
public function getextConfig($id = '', $index = '') { public function getextConfig($id = '', $index = '')
{
switch ($id) { switch ($id) {
case 'keyset': case 'keyset':
$result = $this->keysetdefault; $result = $this->keysetdefault;
@ -56,7 +60,7 @@ class extconfigs {
$tz_tmp = array(); $tz_tmp = array();
foreach ($timezone_abbreviations as $subArray) { 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)) { if (!empty($tf_idt)) {
$tz_tmp[] = $subArray[$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('offset' => '00', 'daylight' => '', 'cisco_code' => 'Greenwich');
return array(); return array();
} }
@ -259,35 +264,36 @@ class extconfigs {
'New Zealand' => array('offset' => '720', 'daylight' => 'Daylight') '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 $db;
// global $amp_conf; // global $amp_conf;
// *** Setings for Provision Sccp // *** 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'); 'locales' => 'locales', 'languages' => 'languages', 'templates' => 'templates', 'dialplan' => 'dialplan', 'softkey' => 'softkey');
// 'pro' /tftpboot - root dir // 'pro' /tftpboot - root dir
// /tftpboot/locales/locales/%Languge_name% // /tftpboot/locales/locales/%Languge_name%
// /tftpboot/settings/XMLdefault.cnf.xml // /tftpboot/settings/XMLdefault.cnf.xml
// /tftpboot/settings/SEP[MAC].cnf.xml // /tftpboot/settings/SEP[MAC].cnf.xml
// /tftpboot/firmware/79xx/SCCPxxxx.loads // /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 // 'def' /tftpboot - root dir
// /tftpboot/languages/%Languge_name% // /tftpboot/languages/%Languge_name%
// /tftpboot/XMLdefault.cnf.xml // /tftpboot/XMLdefault.cnf.xml
// /tftpboot/SEP[MAC].cnf.xml // /tftpboot/SEP[MAC].cnf.xml
// /tftpboot/SCCPxxxx.loads // /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' => '');
// $adv_tree['def'] = Array('templates' => 'tftproot', 'settings' => '', 'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => 'tftproot'); // $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)) { if (empty($confDir)) {
return array('error' => 'empty СonfDir'); 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) // Test Base dir (/tftproot)
if (!empty($db_vars["tftp_path"])) { if (!empty($db_vars["tftp_path"])) {
@ -408,9 +414,10 @@ class extconfigs {
return $base_config; return $base_config;
} }
public function validate_RealTime($realm = '') { public function validate_RealTime($realm = '')
{
global $amp_conf; global $amp_conf;
$res = Array(); $res = array();
if (empty($realm)) { if (empty($realm)) {
$realm = 'sccp'; $realm = 'sccp';
} }
@ -504,5 +511,4 @@ class extconfigs {
} }
return $res; return $res;
} }
} }

View file

@ -6,26 +6,30 @@
namespace FreePBX\modules\Sccp_manager; namespace FreePBX\modules\Sccp_manager;
class sipconfigs { class sipconfigs
{
// protected $database; // protected $database;
// protected $freepbx; // protected $freepbx;
public function __construct($parent_class = null) { public function __construct($parent_class = null)
{
$this->paren_class = $parent_class; $this->paren_class = $parent_class;
// $freepbx // $freepbx
// $this->database = $freepbx->Database; // $this->database = $freepbx->Database;
} }
public function info() { public function info()
{
$Ver = '13.0.4'; $Ver = '13.0.4';
return Array('Version' => $Ver, return array('Version' => $Ver,
'about' => 'Sip Setings ver: ' . $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; global $db;
if ($dataid == '') { if ($dataid == '') {
return False; return false;
} }
switch ($dataid) { switch ($dataid) {
case "Device": case "Device":
@ -40,7 +44,6 @@ class sipconfigs {
$tech[$value['id']][$value['keyword']]=$value['data']; $tech[$value['id']][$value['keyword']]=$value['data'];
} }
} catch (\Exception $e) { } catch (\Exception $e) {
} }
return $tech; return $tech;
case "DeviceById": case "DeviceById":
@ -55,14 +58,13 @@ class sipconfigs {
$value = $value[0]; $value = $value[0];
} }
} catch (\Exception $e) { } catch (\Exception $e) {
} }
return $tech; return $tech;
} }
} }
public function getSipConfig() { public function getSipConfig()
{
$result = array(); $result = array();
// $def_sip_proto = 'sip'; // $def_sip_proto = 'sip';
// $def_proto = 'tcp'; // $def_proto = 'tcp';
@ -81,10 +83,10 @@ class sipconfigs {
*/ */
$tmp_binds = is_array($tmp_binds) ? $tmp_binds: array(); $tmp_binds = is_array($tmp_binds) ? $tmp_binds: array();
$result = array(); $result = array();
foreach($tmp_binds as $f_protocol => $f_bind) { foreach ($tmp_binds as $f_protocol => $f_bind) {
foreach($f_bind as $f_ip => $f_port) { foreach ($f_bind as $f_ip => $f_port) {
if (($f_ip == '0.0.0.0') || ($f_ip == '[::]')) { 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") { if ($f_data['ip'] == "127.0.0.1") {
continue; continue;
} }

View file

@ -10,13 +10,15 @@
namespace FreePBX\modules\Sccp_manager; namespace FreePBX\modules\Sccp_manager;
class srvinterface { class srvinterface
{
var $error; var $error;
var $_info; var $_info;
var $ami_mode; var $ami_mode;
public function __construct($parent_class = null) { public function __construct($parent_class = null)
{
$this->paren_class = $parent_class; $this->paren_class = $parent_class;
if ($this->paren_class == null) { if ($this->paren_class == null) {
$this->paren_class = $this; $this->paren_class = $this;
@ -49,17 +51,19 @@ class srvinterface {
$this->ami_mode = $this->aminterface->status(); $this->ami_mode = $this->aminterface->status();
} }
public function info() { public function info()
{
$Ver = '14.0.1'; $Ver = '14.0.1';
$info = ''; $info = '';
foreach ($this->_info as $key => $value) { foreach ($this->_info as $key => $value) {
$info .= $value['about'] . "\n "; $info .= $value['about'] . "\n ";
} }
return Array('Version' => $Ver, return array('Version' => $Ver,
'about' => 'Server interface data ver: ' . $Ver . "\n " . $info); 'about' => 'Server interface data ver: ' . $Ver . "\n " . $info);
} }
public function sccp_device_reset($id = '') { public function sccp_device_reset($id = '')
{
if ($this->ami_mode) { if ($this->ami_mode) {
return $this->aminterface->sccp_device_reset($id, 'reset'); return $this->aminterface->sccp_device_reset($id, 'reset');
} else { } else {
@ -67,7 +71,8 @@ class srvinterface {
} }
} }
public function sccp_device_restart($id = '') { public function sccp_device_restart($id = '')
{
if ($this->ami_mode) { if ($this->ami_mode) {
return $this->aminterface->sccp_device_reset($id, 'restart'); return $this->aminterface->sccp_device_reset($id, 'restart');
} else { } else {
@ -75,7 +80,8 @@ class srvinterface {
} }
} }
public function sccp_device_reload($id = '') { public function sccp_device_reload($id = '')
{
if ($this->ami_mode) { if ($this->ami_mode) {
return $this->aminterface->sccp_device_reset($id, 'full'); return $this->aminterface->sccp_device_reset($id, 'full');
} else { } else {
@ -83,7 +89,8 @@ class srvinterface {
} }
} }
public function sccp_reset_token($id = '') { public function sccp_reset_token($id = '')
{
if ($this->ami_mode) { if ($this->ami_mode) {
return $this->aminterface->sccp_device_reset($id, 'tokenack'); return $this->aminterface->sccp_device_reset($id, 'tokenack');
} else { } else {
@ -91,7 +98,8 @@ class srvinterface {
} }
} }
public function sccp_reload() { public function sccp_reload()
{
if ($this->ami_mode) { if ($this->ami_mode) {
return $this->aminterface->core_sccp_reload(); return $this->aminterface->core_sccp_reload();
// return $this->oldinterface->sccp_core_commands(array('cmd' => 'sccp_reload')); // !!!!!!!!!!!!!!!!!!!!!!!!!--------------------------- Remove // 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) { if ($this->ami_mode) {
return $this->oldinterface->sccp_core_commands(array('cmd' => 'reload_line', 'name' => $id)); return $this->oldinterface->sccp_core_commands(array('cmd' => 'reload_line', 'name' => $id));
} else { } 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 ($this->ami_mode) {
if (!empty($params['cmd'])) { 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)) { if (empty($dev_id)) {
return array(); return array();
} }
@ -165,7 +176,8 @@ class srvinterface {
} }
} }
public function sccp_list_hints() { public function sccp_list_hints()
{
if ($this->ami_mode) { if ($this->ami_mode) {
return $this->aminterface->core_list_hints(); return $this->aminterface->core_list_hints();
} else { } else {
@ -173,7 +185,8 @@ class srvinterface {
} }
} }
public function sccp_list_all_hints() { public function sccp_list_all_hints()
{
if ($this->ami_mode) { if ($this->ami_mode) {
return $this->aminterface->core_list_all_hints(); 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) { if (!$this->ami_mode) {
return $this->oldinterface->sccp_realtime_status(); return $this->oldinterface->sccp_realtime_status();
} else { } else {
@ -199,7 +213,8 @@ class srvinterface {
} }
} }
public function get_compatible_sccp() { public function get_compatible_sccp()
{
$res = $this->getSCCPVersion(); $res = $this->getSCCPVersion();
if (empty($res)) { if (empty($res)) {
@ -230,7 +245,8 @@ class srvinterface {
// return $res["vCode"]; // return $res["vCode"];
} }
public function getSCCPVersion() { public function getSCCPVersion()
{
$res = $this->getChanSCCPVersion(); $res = $this->getChanSCCPVersion();
if (empty($res)) { if (empty($res)) {
$res = $this->oldinterface->getCoreSCCPVersion(); $res = $this->oldinterface->getCoreSCCPVersion();
@ -238,7 +254,8 @@ class srvinterface {
return $res; return $res;
} }
public function sccp_list_keysets() { public function sccp_list_keysets()
{
if ($this->ami_mode) { if ($this->ami_mode) {
return $this->aminterface->sccp_list_keysets(); 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) { if ($this->ami_mode) {
return $this->aminterface->sccp_get_active_device(); return $this->aminterface->sccp_get_active_device();
} else { } else {
@ -255,7 +273,8 @@ class srvinterface {
} }
} }
function getChanSCCPVersion() { function getChanSCCPVersion()
{
if (!$this->ami_mode) { if (!$this->ami_mode) {
return $this->oldinterface->getChanSCCPVersion(); return $this->oldinterface->getChanSCCPVersion();
} else { } else {
@ -274,7 +293,7 @@ class srvinterface {
case "2": case "2":
$result["vCode"] = 420; $result["vCode"] = 420;
break; break;
case 3. . .5 : case 3. . .5:
$result["vCode"] = 430; $result["vCode"] = 430;
break; break;
default: default:
@ -318,7 +337,8 @@ class srvinterface {
} }
// ---------------------------- Debug Data ------------------------------------------- // ---------------------------- Debug Data -------------------------------------------
function t_get_ami_data() { function t_get_ami_data()
{
global $amp_conf; global $amp_conf;
$fp = fsockopen("127.0.0.1", "5038", $errno, $errstr, 10); $fp = fsockopen("127.0.0.1", "5038", $errno, $errstr, 10);
if (!$fp) { if (!$fp) {
@ -336,8 +356,8 @@ class srvinterface {
// fputs($fp,"DeviceName: SEP00070E36555C\r\n"); // fputs($fp,"DeviceName: SEP00070E36555C\r\n");
// fputs ($fp,"Action: DeviceStateList\r\n"); // fputs ($fp,"Action: DeviceStateList\r\n");
fputs ($fp,"Action: SCCPShowDevices\r\n"); fputs($fp, "Action: SCCPShowDevices\r\n");
fputs($fp,"Segment: general\r\n"); fputs($fp, "Segment: general\r\n");
// fputs ($fp,"Action: SCCPShowDevice\r\n"); // fputs ($fp,"Action: SCCPShowDevice\r\n");
// fputs ($fp,"DeviceName: SEP00070E36555C\r\n"); // fputs ($fp,"DeviceName: SEP00070E36555C\r\n");
@ -391,5 +411,4 @@ class srvinterface {
fclose($fp); fclose($fp);
return $resp; return $resp;
} }
} }

View file

@ -13,21 +13,25 @@
namespace FreePBX\modules\Sccp_manager; namespace FreePBX\modules\Sccp_manager;
class xmlinterface { class xmlinterface
{
private $val_null = 'NONE'; /// REPLACE to null Field 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; $this->paren_class = $parent_class;
} }
public function info() { public function info()
{
$Ver = '13.0.4'; $Ver = '13.0.4';
return Array('Version' => $Ver, return array('Version' => $Ver,
'about' => 'Create XML data interface ver: ' . $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']; $data_path = $data_values['tftp_path'];
if (empty($store_path) || empty($data_path) || empty($data_values)) { if (empty($store_path) || empty($data_path) || empty($data_values)) {
return; 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', $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', 'servicesURL' => 'dev_servicesURL', 'directoryURL' => 'dev_directoryURL', 'proxyServerURL' => 'dev_proxyServerURL', 'idleTimeout' => 'dev_idleTimeout',
@ -372,7 +377,8 @@ class xmlinterface {
return time(); return time();
} }
private function get_server_sccp_bind($data_values = array()) { private function get_server_sccp_bind($data_values = array())
{
$res = array(); $res = array();
if ($data_values['bindaddr'] !== '0.0.0.0') { if ($data_values['bindaddr'] !== '0.0.0.0') {
return array('ip' => $data_values['bindaddr'], 'port' => $data_values['port']); 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', $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', 'servicesURL' => 'dev_servicesURL', 'directoryURL' => 'dev_directoryURL', 'proxyServerURL' => 'dev_proxyServerURL', 'idleTimeout' => 'dev_idleTimeout',
@ -771,7 +778,8 @@ class xmlinterface {
return time(); return time();
} }
function save_DialPlan($confDir, $get_settings) { function save_DialPlan($confDir, $get_settings)
{
$xmlstr = "<DIALTEMPLATE>\n"; $xmlstr = "<DIALTEMPLATE>\n";
$xmlstr .= "<versionStamp>" . time() . "</versionStamp>\n"; $xmlstr .= "<versionStamp>" . time() . "</versionStamp>\n";
$dialFelds = array('match', 'timeout', 'rewrite', 'tone'); //str -to lo ! $dialFelds = array('match', 'timeout', 'rewrite', 'tone'); //str -to lo !
@ -806,8 +814,9 @@ class xmlinterface {
} else { } else {
$errors = array('Fields Dial Plan Name is requered !!'); $errors = array('Fields Dial Plan Name is requered !!');
} }
} else } else {
$put_file = (string) $get_settings['idtemplate']; $put_file = (string) $get_settings['idtemplate'];
}
} else { } else {
$errors = array('Fields Dial Plan Name is requered !!'); $errors = array('Fields Dial Plan Name is requered !!');
} }
@ -822,7 +831,8 @@ class xmlinterface {
return $errors; return $errors;
} }
function create_xmlSoftkeyset($config, $confDir, $name) { function create_xmlSoftkeyset($config, $confDir, $name)
{
if (empty($config[$name])) { if (empty($config[$name])) {
if ($name == 'default') { if ($name == 'default') {
$typeSoft = $confDir["tftp_templates"] . '/SIPDefaultSoftKey.xml_template'; $typeSoft = $confDir["tftp_templates"] . '/SIPDefaultSoftKey.xml_template';
@ -872,22 +882,25 @@ class xmlinterface {
return $errors; return $errors;
} }
private function replaceSimpleXmlNode($xml, $element = SimpleXMLElement) { private function replaceSimpleXmlNode($xml, $element = SimpleXMLElement)
{
$dom = dom_import_simplexml($xml); $dom = dom_import_simplexml($xml);
$import = $dom->ownerDocument->importNode( $import = $dom->ownerDocument->importNode(
dom_import_simplexml($element), TRUE dom_import_simplexml($element),
true
); );
$dom->parentNode->replaceChild($import, $dom); $dom->parentNode->replaceChild($import, $dom);
} }
private function appendSimpleXmlNode($xml, $element = SimpleXMLElement) { private function appendSimpleXmlNode($xml, $element = SimpleXMLElement)
{
$dom = dom_import_simplexml($xml); $dom = dom_import_simplexml($xml);
$import = $dom->ownerDocument->importNode( $import = $dom->ownerDocument->importNode(
dom_import_simplexml($element), TRUE dom_import_simplexml($element),
true
); );
// $dom->parentNode->appendChild($import, $dom); // $dom->parentNode->appendChild($import, $dom);
$dom->parentNode->appendChild($import->cloneNode(true)); $dom->parentNode->appendChild($import->cloneNode(true));
} }
} }

View file

@ -1,11 +1,4 @@
/** (function ($) {
* jQuery.SelectListActions
* https://github.com/esausilva/jquery.selectlistactions.js
*
* (c) http://esausilva.com
*/
(function ($) {
//Moves selected item(s) from sourceList to destinationList //Moves selected item(s) from sourceList to destinationList
$.fn.moveToList = function (sourceList, destinationList) { $.fn.moveToList = function (sourceList, destinationList) {
var opts = $(sourceList + ' option:selected'); var opts = $(sourceList + ' option:selected');

View file

@ -140,7 +140,6 @@ $(document).ready(function () {
if (data.reload === true && old_style ===true ) { if (data.reload === true && old_style ===true ) {
location.reload(); location.reload();
} }
} else { } else {
bs_alert(data.message,data.status); bs_alert(data.message,data.status);
} }
@ -311,7 +310,6 @@ $(document).ready(function () {
$('#sccp_hw_addon').val('NONE').change(); $('#sccp_hw_addon').val('NONE').change();
} }
$('#sccp_hw_addon').attr("disabled", "disabled"); $('#sccp_hw_addon').attr("disabled", "disabled");
} else { } else {
$('#sccp_hw_addon').removeAttr('disabled'); $('#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_id = $(this).data('vhide');
var dev_class = $(this).data('clhide'); var dev_class = $(this).data('clhide');
var dev_val = $(this).val(); 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_id = $(this).data('vhide');
var dev_class = $(this).data('clhide'); var dev_class = $(this).data('clhide');
var dev_val = $(this).val(); var dev_val = $(this).val();
@ -584,7 +584,6 @@ $(document).ready(function () {
}); });
} }
console.log(datas); console.log(datas);
} }
if ($(this).data('id') === 'delete_hardware') { if ($(this).data('id') === 'delete_hardware') {
var dev_cmd = $(this).data('id'); var dev_cmd = $(this).data('id');
@ -603,7 +602,6 @@ $(document).ready(function () {
if (!confirm(_('Are you sure you wish to delete selected device ?'))) { if (!confirm(_('Are you sure you wish to delete selected device ?'))) {
dev_cmd = ''; dev_cmd = '';
} }
} }
if ($(this).data('id') === 'reset_dev' || $(this).data('id') === 'reset_token' || $(this).data('id') === 'update_button_label') { if ($(this).data('id') === 'reset_dev' || $(this).data('id') === 'reset_token' || $(this).data('id') === 'update_button_label') {
var dev_cmd = $(this).data('id'); var dev_cmd = $(this).data('id');
@ -636,11 +634,9 @@ $(document).ready(function () {
} else { } else {
dev_cmd = ''; dev_cmd = '';
} }
} }
} }
if (dev_cmd !== '') { if (dev_cmd !== '') {
$.ajax({ $.ajax({
type: 'POST', type: 'POST',
url: 'ajax.php?module=sccp_manager&command=' + dev_cmd, url: 'ajax.php?module=sccp_manager&command=' + dev_cmd,
@ -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'); // console.log('load_oncliсk');
var add_softkey = false; 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. // We'd like a new one, please.
pcls = pe.data('for'); pcls = pe.data('for');
pname = pe.data('id'); 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'); pcls = pe.data('for');
pname = pe.data('id'); 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. // We'd like a new one, please.
pcls = pe.data('for'); pcls = pe.data('for');
pname = pe.data('id'); pname = pe.data('id');
@ -1006,7 +1005,8 @@ var theForm = document.editIax;
return unescape(result); return unescape(result);
} }
*/ */
function bs_page_reload() { function bs_page_reload()
{
window.location.reload(false); window.location.reload(false);
} }
function bs_alert(data, status, reload) function bs_alert(data, status, reload)
@ -1017,7 +1017,7 @@ function bs_alert(data, status, reload)
data.forEach(function (entry) { data.forEach(function (entry) {
alert(entry); alert(entry);
}); });
}else { } else {
alert(data); alert(data);
} }
return true; // Old style return true; // Old style
@ -1038,10 +1038,10 @@ function bs_alert(data, status, reload)
var modal2 = modal.find('.modal-body'); var modal2 = modal.find('.modal-body');
var msg_html = ''; var msg_html = '';
if (Array.isArray(data)) { if (Array.isArray(data)) {
data.forEach(function(entry) { data.forEach(function (entry) {
msg_html = msg_html + '<p>'+ entry + '</p>'; msg_html = msg_html + '<p>'+ entry + '</p>';
}); });
}else { } else {
msg_html = data; msg_html = data;
} }
modal2[0].innerHTML = msg_html; modal2[0].innerHTML = msg_html;
@ -1059,13 +1059,15 @@ function hex2bin(hex)
{ {
var bytes = [], str; 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)); bytes.push(parseInt(hex.substr(i, 2), 16));
}
return String.fromCharCode.apply(String, bytes); return String.fromCharCode.apply(String, bytes);
} }
function sleep(milliseconds) { function sleep(milliseconds)
{
var start = new Date().getTime(); var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) { for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds) { if ((new Date().getTime() - start) > milliseconds) {

View file

@ -5,7 +5,9 @@
// Templete for Sccp Driver // Templete for Sccp Driver
// //
namespace FreePBX\modules\Core\Drivers; 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', private $data_fld = array("pin"=>'pin', "label" => 'label', "accountcode" => 'account',
"context" =>'lcontext',"incominglimit"=>'incominglimit', "context" =>'lcontext',"incominglimit"=>'incominglimit',
"callgroup"=>'callgroup',"pickupgroup"=>'pickupgroup', "callgroup"=>'callgroup',"pickupgroup"=>'pickupgroup',
@ -18,7 +20,8 @@ class Sccp extends \FreePBX\modules\Core\Driver {
'namedcallgroup'=>'namedcallgroup', 'namedpickupgroup' => 'namedpickupgroup' 'namedcallgroup'=>'namedcallgroup', 'namedpickupgroup' => 'namedpickupgroup'
); );
public function getInfo() { public function getInfo()
{
return array( return array(
"rawName" => "sccp", "rawName" => "sccp",
"hardware" => "sccp_custom", "hardware" => "sccp_custom",
@ -41,15 +44,16 @@ class Sccp extends \FreePBX\modules\Core\Driver {
return true; return true;
} }
*/ */
public function addDevice($id, $settings) { public function addDevice($id, $settings)
{
$add_fld = array ("name"=>'label',"outboundcid"=>'cid_num',"langcode"=>'language',"extdisplay"=>'description'); $add_fld = array ("name"=>'label',"outboundcid"=>'cid_num',"langcode"=>'language',"extdisplay"=>'description');
// print_r($_REQUEST); // print_r($_REQUEST);
// echo '<br><br>'; // echo '<br><br>';
// die(print_r($settings)); // die(print_r($settings));
$settings['cid_num']['value']=''; $settings['cid_num']['value']='';
if (isset($_REQUEST)){ if (isset($_REQUEST)) {
foreach($add_fld as $key => $val) { foreach ($add_fld as $key => $val) {
if (!empty($_REQUEST[$key])){ if (!empty($_REQUEST[$key])) {
$settings[$val]['value'] = $_REQUEST[$key]; $settings[$val]['value'] = $_REQUEST[$key];
} }
} }
@ -59,9 +63,9 @@ class Sccp extends \FreePBX\modules\Core\Driver {
} }
$sql = 'INSERT INTO sccpline (name'; $sql = 'INSERT INTO sccpline (name';
$sqlv = 'values ("'.$id.'"'; $sqlv = 'values ("'.$id.'"';
foreach($this->data_fld as $key => $val) { foreach ($this->data_fld as $key => $val) {
if (!empty($settings[$val]) ) { if (!empty($settings[$val])) {
if (!empty($settings[$val]['value'])){ if (!empty($settings[$val]['value'])) {
$sql .= ', '.$key; $sql .= ', '.$key;
$sqlv .= ", '".$settings[$val]['value']."' "; $sqlv .= ", '".$settings[$val]['value']."' ";
} }
@ -73,7 +77,8 @@ class Sccp extends \FreePBX\modules\Core\Driver {
return true; return true;
} }
public function delDevice($id) { public function delDevice($id)
{
$sql = "DELETE FROM sccpline WHERE name = ?"; $sql = "DELETE FROM sccpline WHERE name = ?";
$sth = $this->database->prepare($sql); $sth = $this->database->prepare($sql);
$sth->execute(array($id)); $sth->execute(array($id));
@ -81,11 +86,12 @@ class Sccp extends \FreePBX\modules\Core\Driver {
} }
public function getDevice($id) { public function getDevice($id)
{
$sccp_line = array(); $sccp_line = array();
// $sql = "SELECT name as id, name as name"; // $sql = "SELECT name as id, name as name";
$sql = "SELECT name as id, name as name "; $sql = "SELECT name as id, name as name ";
foreach($this->data_fld as $key => $val) { foreach ($this->data_fld as $key => $val) {
$sql .= ',`'. $key .'` as '.$val; $sql .= ',`'. $key .'` as '.$val;
} }
$sql .= " FROM sccpline WHERE name = ?"; $sql .= " FROM sccpline WHERE name = ?";
@ -97,12 +103,14 @@ class Sccp extends \FreePBX\modules\Core\Driver {
$result = $sth->fetch(\PDO::FETCH_ASSOC); $result = $sth->fetch(\PDO::FETCH_ASSOC);
$tech = $result; $tech = $result;
$tech['dial']='SCCP/'.$id; $tech['dial']='SCCP/'.$id;
} catch(\Exception $e) {} } catch (\Exception $e) {
}
return $tech; return $tech;
} }
public function getDefaultDeviceSettings($id, $displayname, &$flag) { public function getDefaultDeviceSettings($id, $displayname, &$flag)
{
$dial = 'SCCP'; $dial = 'SCCP';
$settings = array( $settings = array(
"pin" => array( "pin" => array(
@ -173,30 +181,31 @@ class Sccp extends \FreePBX\modules\Core\Driver {
} }
# !TODO!: -TODO-: Would it not be better to put this part in the view directory (MVC) ? No, This is a template for Freepbx. # !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) { public function getDeviceDisplay($display, $deviceInfo, $currentcomponent, $primarySection)
{
$section = _("Settings"); $section = _("Settings");
$category = "general"; $category = "general";
$tmparr = array(); $tmparr = array();
$tt = _("The maximum number of incoming calls on this line."); $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); // $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 // !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); $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)."); $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)"); $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)"); $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."); $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); $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)."); $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);
@ -249,8 +258,8 @@ class Sccp extends \FreePBX\modules\Core\Driver {
$select[] = array( 'value' => '0x7A', 'text' => 'MLPP Bpa'); $select[] = array( 'value' => '0x7A', 'text' => 'MLPP Bpa');
$select[] = array( 'value' => '0x7B', 'text' => 'MLPP Bnea'); $select[] = array( 'value' => '0x7B', 'text' => 'MLPP Bnea');
$select[] = array( 'value' => '0x7C', 'text' => 'MLPP Upa'); $select[] = array( 'value' => '0x7C', 'text' => 'MLPP Upa');
/* !TODO!: +TODO+: I would remove the values below this line, except for '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' => '0x7F', 'text' => 'No Tone');
$select[] = array( 'value' => '0x80', 'text' => 'Meetme Greeting Tone'); $select[] = array( 'value' => '0x80', 'text' => 'Meetme Greeting Tone');
$select[] = array( 'value' => '0x81', 'text' => 'Meetme Number Invalid Tone'); $select[] = array( 'value' => '0x81', 'text' => 'Meetme Number Invalid Tone');
$select[] = array( 'value' => '0x82', 'text' => 'Meetme Number Failed 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)"); $tt = _("Outside dialtone frequency (defaul 0x22)");
$tmparr['secondary_dialtone_tone'] = array('prompttext' => _('Secondary dialtone'), 'value' => '0x22', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'select'); $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); unset($select);
$select[] = array('value' => 'yes', 'text' => 'Yes'); $select[] = array('value' => 'yes', 'text' => 'Yes');
$select[] = array('value' => 'no', 'text' => 'No'); $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' => 'reject', 'text' => 'Reject');
$select[] = array('value' => 'silent', 'text' => 'Silent'); $select[] = array('value' => 'silent', 'text' => 'Silent');
$select[] = array('value' => 'UserDefined', 'text' => 'UserDefined'); $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-: 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-: 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>'. $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>'. _("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>'. _("Reject - Usesr can only switch off and on (in reject/busy mode)").'<br>'.
@ -301,7 +310,7 @@ class Sccp extends \FreePBX\modules\Core\Driver {
unset($select); unset($select);
$select[] = array('value' => 'default', 'text' => _('default')); $select[] = array('value' => 'default', 'text' => _('default'));
if (function_exists('music_list')){ if (function_exists('music_list')) {
$moh_list = music_list(); $moh_list = music_list();
} else { } else {
$moh_list = array('default'); $moh_list = array('default');

View file

@ -22,41 +22,52 @@
*/ */
function after($this, $inthat) { function after($this, $inthat)
if (!is_bool(strpos($inthat, $this))) {
if (!is_bool(strpos($inthat, $this))) {
return substr($inthat, strpos($inthat, $this) + strlen($this)); return substr($inthat, strpos($inthat, $this) + strlen($this));
}
} }
function after_last($this, $inthat) { function after_last($this, $inthat)
if (!is_bool(strrevpos($inthat, $this))) {
if (!is_bool(strrevpos($inthat, $this))) {
return substr($inthat, strrevpos($inthat, $this) + strlen($this)); return substr($inthat, strrevpos($inthat, $this) + strlen($this));
}
} }
function before($this, $inthat) { function before($this, $inthat)
{
return substr($inthat, 0, strpos($inthat, $this)); return substr($inthat, 0, strpos($inthat, $this));
} }
function before_last($this, $inthat) { function before_last($this, $inthat)
{
return substr($inthat, 0, strrevpos($inthat, $this)); return substr($inthat, 0, strrevpos($inthat, $this));
} }
function between($this, $that, $inthat) { function between($this, $that, $inthat)
{
return before($that, after($this, $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)); return after_last($this, before_last($that, $inthat));
} }
function strrevpos($instr, $needle) { function strrevpos($instr, $needle)
{
$rev_pos = strpos(strrev($instr), strrev($needle)); $rev_pos = strpos(strrev($instr), strrev($needle));
if ($rev_pos === false) if ($rev_pos === false) {
return false; return false;
else } else {
return strlen($instr) - $rev_pos - strlen($needle); return strlen($instr) - $rev_pos - strlen($needle);
}
} }
function strpos_array($haystack, $needles) { function strpos_array($haystack, $needles)
{
if (is_array($needles)) { if (is_array($needles)) {
foreach ($needles as $str) { foreach ($needles as $str) {
if (is_array($str)) { if (is_array($str)) {
@ -64,14 +75,12 @@ function strpos_array($haystack, $needles) {
} else { } else {
$pos = strpos($haystack, $str); $pos = strpos($haystack, $str);
} }
if ($pos !== FALSE) { if ($pos !== false) {
return $pos; return $pos;
} }
} }
} else { } else {
return strpos($haystack, $needles); return strpos($haystack, $needles);
} }
return FALSE; return false;
} }
?>

View file

@ -27,7 +27,8 @@ if (class_exists($class, false)) {
$srvinterface = new $class(); $srvinterface = new $class();
} }
function Get_DB_config($sccp_compatible) { function Get_DB_config($sccp_compatible)
{
global $mobile_hw; global $mobile_hw;
$db_config_v0 = array( $db_config_v0 = array(
'sccpdevmodel' => 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') { if ($mobile_hw == '1') {
return $db_config_v4M; return $db_config_v4M;
} }
@ -378,9 +379,10 @@ $sccp_compatible = 0;
//$db_config = $db_config_v0; //$db_config = $db_config_v0;
$db_config = ''; $db_config = '';
function CheckSCCPManagerDBTables($table_req) { function CheckSCCPManagerDBTables($table_req)
global $amp_conf; {
global $astman; global $amp_conf;
global $astman;
global $db; global $db;
outn("<li>" . _("Checking for Sccp_manager database tables..") . "</li>"); outn("<li>" . _("Checking for Sccp_manager database tables..") . "</li>");
foreach ($table_req as $value) { foreach ($table_req as $value) {
@ -394,25 +396,27 @@ global $astman;
} }
} }
function CheckSCCPManagerDBVersion() { function CheckSCCPManagerDBVersion()
{
global $db; global $db;
outn("<li>" . _("Checking for previw version Sccp_manager..") . "</li>"); outn("<li>" . _("Checking for previw version Sccp_manager..") . "</li>");
$check = $db->getRow("SELECT data FROM `sccpsettings` where keyword ='sccp_compatible'", DB_FETCHMODE_ASSOC); $check = $db->getRow("SELECT data FROM `sccpsettings` where keyword ='sccp_compatible'", DB_FETCHMODE_ASSOC);
if (DB::IsError($check)) { if (DB::IsError($check)) {
outn(_("Can't find previw version : ")); outn(_("Can't find previw version : "));
return FALSE; return false;
} }
if (!empty($check['data'])) { if (!empty($check['data'])) {
outn(_("Find DB Schema : " . $check['data'])); outn(_("Find DB Schema : " . $check['data']));
return $check['data']; return $check['data'];
} else { } else {
return FALSE; return false;
} }
} }
/* notused */ /* notused */
function CheckPermissions() { function CheckPermissions()
{
outn("<li>" . _("Checking Filesystem Permissions") . "</li>"); outn("<li>" . _("Checking Filesystem Permissions") . "</li>");
$dst = $_SERVER['DOCUMENT_ROOT'] . '/admin/modules/sccp_manager/views'; $dst = $_SERVER['DOCUMENT_ROOT'] . '/admin/modules/sccp_manager/views';
if (fileowner($_SERVER['DOCUMENT_ROOT']) != fileowner($dst)) { if (fileowner($_SERVER['DOCUMENT_ROOT']) != fileowner($dst)) {
@ -420,7 +424,8 @@ function CheckPermissions() {
} }
} }
function CheckAsteriskVersion() { function CheckAsteriskVersion()
{
outn("<li>" . _("Checking Asterisk Version : ") . $version . "</li>"); outn("<li>" . _("Checking Asterisk Version : ") . $version . "</li>");
$version = FreePBX::Config()->get('ASTVERSION'); $version = FreePBX::Config()->get('ASTVERSION');
if (!empty($version)) { if (!empty($version)) {
@ -439,7 +444,8 @@ function CheckAsteriskVersion() {
return $ver_compatible; return $ver_compatible;
} }
function CheckChanSCCPCompatible() { function CheckChanSCCPCompatible()
{
global $srvinterface, $astman; global $srvinterface, $astman;
if (!$astman) { if (!$astman) {
ie_freepbx('No asterisk manager connection provided!. Installation Failed'); ie_freepbx('No asterisk manager connection provided!. Installation Failed');
@ -449,7 +455,8 @@ function CheckChanSCCPCompatible() {
return $sccp_compatible; return $sccp_compatible;
} }
function InstallDB_Buttons() { function InstallDB_Buttons()
{
global $db; global $db;
outn("<li>" . _("Creating buttons table...") . "</li>"); outn("<li>" . _("Creating buttons table...") . "</li>");
// $check = $db->getRow("SELECT 1 FROM buttonconfig LIMIT 0", DB_FETCHMODE_ASSOC); // $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"); die_freepbx("Can not create sccpbuttonconfig table, error:$check\n");
} }
return true; return true;
} }
function InstallDB_sccpsettings() { function InstallDB_sccpsettings()
{
global $db; global $db;
outn("<li>" . _("Creating sccpsettings table...") . "</li>"); outn("<li>" . _("Creating sccpsettings table...") . "</li>");
$sql = "CREATE TABLE IF NOT EXISTS `sccpsettings` ( $sql = "CREATE TABLE IF NOT EXISTS `sccpsettings` (
@ -490,7 +497,8 @@ function InstallDB_sccpsettings() {
return true; return true;
} }
function InstallDB_sccpdevmodel() { function InstallDB_sccpdevmodel()
{
global $db; global $db;
outn("<li>" . _("Creating sccpdevmodel table...") . "</li>"); outn("<li>" . _("Creating sccpdevmodel table...") . "</li>");
$sql = "CREATE TABLE IF NOT EXISTS `sccpdevmodel` ( $sql = "CREATE TABLE IF NOT EXISTS `sccpdevmodel` (
@ -512,7 +520,8 @@ function InstallDB_sccpdevmodel() {
return true; return true;
} }
function InstallDB_sccpuser() { function InstallDB_sccpuser()
{
global $db; global $db;
outn("<li>" . _("Creating sccpuser table...") . "</li>"); outn("<li>" . _("Creating sccpuser table...") . "</li>");
$sql = "CREATE TABLE IF NOT EXISTS `sccpuser` ( $sql = "CREATE TABLE IF NOT EXISTS `sccpuser` (
@ -534,7 +543,8 @@ function InstallDB_sccpuser() {
return true; return true;
} }
function InstallDB_updateSchema($db_config) { function InstallDB_updateSchema($db_config)
{
global $db; global $db;
if (!$db_config) { if (!$db_config) {
die_freepbx("No db_config provided"); die_freepbx("No db_config provided");
@ -658,7 +668,8 @@ function InstallDB_updateSchema($db_config) {
return true; return true;
} }
function InstallDB_fillsccpdevmodel() { function InstallDB_fillsccpdevmodel()
{
global $db; global $db;
outn("<li>" . _("Fill sccpdevmodel") . "</li>"); 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)," . $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; return true;
} }
function InstallDB_updateSccpDevice() { function InstallDB_updateSccpDevice()
{
global $db; global $db;
outn("<li>" . _("Update sccpdevice") . "</li>"); 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='';"; $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; global $db;
outn("<li>" . _("(Re)Create buttonconfig trigger") . "</li>"); outn("<li>" . _("(Re)Create buttonconfig trigger") . "</li>");
$sql = "DROP TRIGGER IF EXISTS sccp_trg_buttonconfig;"; $sql = "DROP TRIGGER IF EXISTS sccp_trg_buttonconfig;";
@ -725,7 +738,8 @@ function InstallDB_createButtonConfigTrigger() {
// outn("<li>" . $sql . "</li>"); // outn("<li>" . $sql . "</li>");
return true; return true;
} }
function InstallDB_updateDBVer($sccp_compatible) { function InstallDB_updateDBVer($sccp_compatible)
{
global $db; global $db;
outn("<li>" . _("Update DB Ver") . "</li>"); outn("<li>" . _("Update DB Ver") . "</li>");
$sql = "REPLACE INTO `sccpsettings` (`keyword`, `data`, `seq`, `type`), VALUES ('SccpDBmodel', '"+$sccp_compatible+ "','30','0');"; $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; return true;
} }
function InstallDB_CreateSccpDeviceConfigView($sccp_compatible) { function InstallDB_CreateSccpDeviceConfigView($sccp_compatible)
{
global $db; global $db;
outn("<li>" . _("(Re)Create sccpdeviceconfig view") . "</li>"); outn("<li>" . _("(Re)Create sccpdeviceconfig view") . "</li>");
$sql = ""; $sql = "";
@ -797,7 +812,6 @@ function InstallDB_CreateSccpDeviceConfigView($sccp_compatible) {
FROM sccpuser FROM sccpuser
LEFT JOIN sccpbuttonconfig ON ( sccpbuttonconfig.reftype = 'sccpuser' AND sccpbuttonconfig.ref = sccpuser.id) LEFT JOIN sccpbuttonconfig ON ( sccpbuttonconfig.reftype = 'sccpuser' AND sccpbuttonconfig.ref = sccpuser.id)
GROUP BY sccpuser.name; "; GROUP BY sccpuser.name; ";
} else { } else {
$sql .= "CREATE OR REPLACE $sql .= "CREATE OR REPLACE
ALGORITHM = MERGE ALGORITHM = MERGE
@ -821,7 +835,8 @@ function InstallDB_CreateSccpDeviceConfigView($sccp_compatible) {
} }
return true; return true;
} }
function CreateBackUpConfig() { function CreateBackUpConfig()
{
global $amp_conf; global $amp_conf;
outn("<li>" . _("Create Config BackUp") . "</li>"); outn("<li>" . _("Create Config BackUp") . "</li>");
$cnf_int = \FreePBX::Config(); $cnf_int = \FreePBX::Config();
@ -830,7 +845,7 @@ function CreateBackUpConfig() {
$dir = $cnf_int->get('ASTETCDIR'); $dir = $cnf_int->get('ASTETCDIR');
$fsql = $dir.'/sccp_backup_'.date("Ymd").'.sql'; $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(); $zip = new \ZipArchive();
$filename = $dir . "/sccp_instal_backup" . date("Ymd"). ".zip"; $filename = $dir . "/sccp_instal_backup" . date("Ymd"). ".zip";
@ -853,7 +868,8 @@ function CreateBackUpConfig() {
outn("<li>" . _("Create Config BackUp: ") . $filename ."</li>"); outn("<li>" . _("Create Config BackUp: ") . $filename ."</li>");
} }
function RenameConfig() { function RenameConfig()
{
global $amp_conf; global $amp_conf;
outn("<li>" . _("Move Old Config") . "</li>"); outn("<li>" . _("Move Old Config") . "</li>");
$cnf_int = \FreePBX::Config(); $cnf_int = \FreePBX::Config();
@ -869,7 +885,8 @@ function RenameConfig() {
} }
} }
function Setup_RealTime() { function Setup_RealTime()
{
global $amp_conf; global $amp_conf;
outn("<li>" . _("Pre config RealTime") . "</li>"); outn("<li>" . _("Pre config RealTime") . "</li>");
$cnf_int = \FreePBX::Config(); $cnf_int = \FreePBX::Config();

View file

@ -1,5 +1,7 @@
<?php /* $Id:$ */ <?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 // License for all code of this FreePBX module can be found in the license file inside the module directory
// Copyright 2015 Sangoma Technologies. // Copyright 2015 Sangoma Technologies.
// //
@ -33,14 +35,14 @@ if (empty($spage->class_error)) {
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div> <div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
<div class="wrapper"> <div class="wrapper">
<ul class="nav nav-tabs list" role="tablist"> <ul class="nav nav-tabs list" role="tablist">
<?php foreach($display_page as $key => $page) { ?> <?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> <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 } ?> <?php } ?>
</ul> </ul>
</div> </div>
</div> </div>
<div class="tab-content display"> <div class="tab-content display">
<?php foreach($display_page as $key => $page) { ?> <?php foreach ($display_page as $key => $page) { ?>
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>"> <div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
<?php echo $page['content']?> <?php echo $page['content']?>
</div> </div>

View file

@ -1,5 +1,7 @@
<?php /* $Id:$ */ <?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 // License for all code of this FreePBX module can be found in the license file inside the module directory
// Copyright 2015 Sangoma Technologies. // Copyright 2015 Sangoma Technologies.
// //
@ -34,14 +36,14 @@ if (empty($spage->class_error)) {
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div> <div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
<div class="wrapper"> <div class="wrapper">
<ul class="nav nav-tabs list" role="tablist"> <ul class="nav nav-tabs list" role="tablist">
<?php foreach($display_page as $key => $page) { ?> <?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> <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 } ?> <?php } ?>
</ul> </ul>
</div> </div>
</div> </div>
<div class="tab-content display"> <div class="tab-content display">
<?php foreach($display_page as $key => $page) { ?> <?php foreach ($display_page as $key => $page) { ?>
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>"> <div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
<?php echo $page['content']?> <?php echo $page['content']?>
</div> </div>

View file

@ -1,5 +1,7 @@
<?php /* $Id:$ */ <?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 // License for all code of this FreePBX module can be found in the license file inside the module directory
// Copyright 2015 Sangoma Technologies. // Copyright 2015 Sangoma Technologies.
// vim: set ai ts=4 sw=4 ft=php: // vim: set ai ts=4 sw=4 ft=php:
@ -22,14 +24,14 @@ $spage = FreePBX::create()->Sccp_manager;
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div> <div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
<div class="wrapper"> <div class="wrapper">
<ul class="nav nav-tabs list" role="tablist"> <ul class="nav nav-tabs list" role="tablist">
<?php foreach($spage->myShowPage() as $key => $page) { ?> <?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> <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 } ?> <?php } ?>
</ul> </ul>
</div> </div>
</div> </div>
<div class="tab-content display"> <div class="tab-content display">
<?php foreach($spage->myShowPage() as $key => $page) { ?> <?php foreach ($spage->myShowPage() as $key => $page) { ?>
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>"> <div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
<?php echo $page['content']?> <?php echo $page['content']?>
</div> </div>

View file

@ -30,22 +30,24 @@ function CreateBackUpConfig() {
outn("<li>" . _("Create Config BackUp: ") . $filename ."</li>"); 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; global $db;
$version = FreePBX::Config()->get('ASTVERSION'); $version = FreePBX::Config()->get('ASTVERSION');
out('Remove all SCCP tables'); out('Remove all SCCP tables');
$tables = array('sccpdevmodel', 'sccpsettings'); $tables = array('sccpdevmodel', 'sccpsettings');
foreach ($tables as $table) { foreach ($tables as $table) {
$sql = "DROP TABLE IF EXISTS {$table}"; $sql = "DROP TABLE IF EXISTS {$table}";
$result = $db->query($sql); $result = $db->query($sql);
if (DB::IsError($result)) { if (DB::IsError($result)) {
die_freepbx($result->getDebugInfo()); die_freepbx($result->getDebugInfo());
} }
unset($result); unset($result);
} }
if (!empty($version)) { if (!empty($version)) {
// Woo, we have a version // Woo, we have a version
$check = $db->getRow("SELECT 1 FROM `kvstore` LIMIT 0", DB_FETCHMODE_ASSOC); $check = $db->getRow("SELECT 1 FROM `kvstore` LIMIT 0", DB_FETCHMODE_ASSOC);
if (!(DB::IsError($check))) { if (!(DB::IsError($check))) {
@ -67,8 +69,6 @@ if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); }
DROP TABLE IF EXISTS `sccpuser`; DROP TABLE IF EXISTS `sccpuser`;
* *
*/ */
} }
echo "done<br>\n"; echo "done<br>\n";
?>

View file

@ -62,12 +62,12 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
<?php <?php
$i = 0; $i = 0;
foreach ($keynamearray as $key => $value) { foreach ($keynamearray as $key => $value) {
if ($i < 9 ){ if ($i < 9) {
echo '<th data-sortable="false" data-field="'.$key.'">'._($value['sname']).'</th>'; echo '<th data-sortable="false" data-field="'.$key.'">'._($value['sname']).'</th>';
} }
$i ++; $i ++;
} }
?> ?>
<th data-field="actions" data-formatter="DispayActionsKeyFormatter"><?php echo _('Actions')?></th> <th data-field="actions" data-formatter="DispayActionsKeyFormatter"><?php echo _('Actions')?></th>
</tr> </tr>
</thead> </thead>
@ -106,7 +106,7 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
<?php <?php
$i = 0; $i = 0;
foreach ($keysetarray as $key => $value) { foreach ($keysetarray as $key => $value) {
if ($i == 0) { if ($i == 0) {
echo '<li role="presentation" data-name="'.$key.'" class="active">'; echo '<li role="presentation" data-name="'.$key.'" class="active">';
} else { } else {
@ -115,14 +115,13 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
echo '<a href="#'.$key.'" aria-controls="'.$key.'" role="tab" data-toggle="tab">'._($key); echo '<a href="#'.$key.'" aria-controls="'.$key.'" role="tab" data-toggle="tab">'._($key);
echo '</a></li>'; echo '</a></li>';
$i ++; $i ++;
}
}
?> ?>
</ul> </ul>
<div class="tab-content display"> <div class="tab-content display">
<?php <?php
$i = 0; $i = 0;
foreach ($keysetarray as $key => $value) { foreach ($keysetarray as $key => $value) {
if ($i == 0) { if ($i == 0) {
echo '<div role="tabpanel" id="'.$key.'" class="tab-pane active">'; echo '<div role="tabpanel" id="'.$key.'" class="tab-pane active">';
} else { } else {
@ -137,7 +136,7 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
echo '<option value="'.$data.'">'.$data.'</option>'; echo '<option value="'.$data.'">'.$data.'</option>';
} }
echo '</select></div><div class="col-md-1">'; echo '</select></div><div class="col-md-1">';
foreach ($keymultiselect as $btkey =>$btval) { foreach ($keymultiselect as $btkey => $btval) {
echo '<input type="button" class="btnMultiselect" data-id="'.$key.'" data-key="'.$btkey.'" value="'.$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 '</div><div class="col-md-4"><select multiple class="form-control" name="sel_'.$key.'" id="destination_'.$key.'">';
@ -145,7 +144,7 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
echo '<span id="'.$key.'-help" class="help-block fpbx-help-block">'._($keynamearray[$key]['help']).'</span>'; echo '<span id="'.$key.'-help" class="help-block fpbx-help-block">'._($keynamearray[$key]['help']).'</span>';
echo '</div></div></div></div>'; echo '</div></div></div></div>';
$i ++; $i ++;
} }
?> ?>
</div> </div>

View file

@ -17,7 +17,7 @@ $def_val['directed_pickup_context'] = array("keyword" => 'directed_pickup_conte
if (!empty($_REQUEST['new_id'])) { if (!empty($_REQUEST['new_id'])) {
$dev_id = $_REQUEST['new_id']; $dev_id = $_REQUEST['new_id'];
$val = str_replace(array('SEP','ATA','VG'), '', $dev_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"); $def_val['mac'] = array("keyword" => 'mac', "data" => $val, "seq" => "99");
$val = $_REQUEST['type']; $val = $_REQUEST['type'];
$def_val['type'] = array("keyword" => 'type', "data" => $val, "seq" => "99"); $def_val['type'] = array("keyword" => 'type', "data" => $val, "seq" => "99");
@ -34,27 +34,27 @@ if (!empty($_REQUEST['id'])) {
if (!empty($val)) { if (!empty($val)) {
switch ($key) { switch ($key) {
case 'type': 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])) { if (!empty($tmp_raw[0])) {
$tmp_raw = $tmp_raw[0]; $tmp_raw = $tmp_raw[0];
} }
if (!empty($tmp_raw['validate'])) { if (!empty($tmp_raw['validate'])) {
$tmpar = explode(";",$tmp_raw['validate']); $tmpar = explode(";", $tmp_raw['validate']);
if ($tmpar[0] != 'yes') { 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') { 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; break;
case 'name': case 'name':
$key = 'mac'; $key = 'mac';
$val = str_replace(array('SEP','ATA','VG'), '', $val); $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; break;
case '_hwlang': case '_hwlang':
$tmpar = explode(":",$val); $tmpar = explode(":", $val);
$def_val['netlang'] = array("keyword" => 'netlang', "data" => $tmpar[0], "seq" => "99"); $def_val['netlang'] = array("keyword" => 'netlang', "data" => $tmpar[0], "seq" => "99");
$def_val['devlang'] = array("keyword" => 'devlang', "data" => $tmpar[1], "seq" => "99"); $def_val['devlang'] = array("keyword" => 'devlang', "data" => $tmpar[1], "seq" => "99");
break; break;
@ -102,12 +102,12 @@ if (!empty($device_warning)) {
<input type="hidden" name="Submit" value="Submit"> <input type="hidden" name="Submit" value="Submit">
<?php <?php
if (empty($dev_new)){ if (empty($dev_new)) {
echo '<input type="hidden" name="sccp_deviceid" value="new">'; echo '<input type="hidden" name="sccp_deviceid" value="new">';
} else { } else {
echo '<input type="hidden" name="sccp_deviceid" value="'.$dev_id.'">'; 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); echo $this->ShowGroup('sccp_hw_dev', 1, 'sccp_hw', $def_val);
} else { } else {
echo $this->ShowGroup('sccp_hw_dev_edit', 1, 'sccp_hw', $def_val); 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']; $dev_id = $_REQUEST['ru_id'];
$def_val['id'] = array("keyword" => 'id', "data" => $dev_id, "seq" => "99"); $def_val['id'] = array("keyword" => 'id', "data" => $dev_id, "seq" => "99");
$db_res = $this->dbinterface->get_db_SccpTableData('get_sccpuser', array("id" => $dev_id)); $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) { foreach ($db_res as $key => $val) {
if (!empty($val)) { if (!empty($val)) {
$def_val[$key] = array("keyword" => $key, "data" => $val, "seq" => "99"); $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'])) { if (!empty($_REQUEST['new_id'])) {
$dev_id = $_REQUEST['new_id']; $dev_id = $_REQUEST['new_id'];
$val = str_replace(array('SEP','ATA','VG'), '', $dev_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"); $def_val['mac'] = array("keyword" => 'mac', "data" => $val, "seq" => "99");
$val = $_REQUEST['type']; $val = $_REQUEST['type'];
$def_val['type'] = array("keyword" => 'type', "data" => $val, "seq" => "99"); $def_val['type'] = array("keyword" => 'type', "data" => $val, "seq" => "99");
@ -34,27 +34,27 @@ if (!empty($_REQUEST['id'])) {
if (!empty($val)) { if (!empty($val)) {
switch ($key) { switch ($key) {
case 'type': 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])) { if (!empty($tmp_raw[0])) {
$tmp_raw = $tmp_raw[0]; $tmp_raw = $tmp_raw[0];
} }
if (!empty($tmp_raw['validate'])) { if (!empty($tmp_raw['validate'])) {
$tmpar = explode(";",$tmp_raw['validate']); $tmpar = explode(";", $tmp_raw['validate']);
if ($tmpar[0] != 'yes') { 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') { 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; break;
case 'name': case 'name':
$key = 'mac'; $key = 'mac';
$val = str_replace(array('SEP','ATA','VG'), '', $val); $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; break;
case '_hwlang': case '_hwlang':
$tmpar = explode(":",$val); $tmpar = explode(":", $val);
$def_val['netlang'] = array("keyword" => 'netlang', "data" => $tmpar[0], "seq" => "99"); $def_val['netlang'] = array("keyword" => 'netlang', "data" => $tmpar[0], "seq" => "99");
$def_val['devlang'] = array("keyword" => 'devlang', "data" => $tmpar[1], "seq" => "99"); $def_val['devlang'] = array("keyword" => 'devlang', "data" => $tmpar[1], "seq" => "99");
break; break;
@ -104,12 +104,12 @@ if (!empty($device_warning)) {
<?php <?php
if (empty($dev_new)){ if (empty($dev_new)) {
echo '<input type="hidden" name="sccp_deviceid" value="new">'; echo '<input type="hidden" name="sccp_deviceid" value="new">';
} else { } else {
echo '<input type="hidden" name="sccp_deviceid" value="'.$dev_id.'">'; 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); echo $this->ShowGroup('sccp_hw_sip_dev', 1, 'sccp_hw', $def_val);
} else { } else {
echo $this->ShowGroup('sccp_hw_dev_edit', 1, 'sccp_hw', $def_val); 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'); $lines_list = $this->dbinterface->get_db_SccpTableData('SccpExtension');
//$hint_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); // print_r($hint_list);
$line_id =0; $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_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)); $db_device = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_byid', array("id" => $dev_id));
$max_buttons = $db_device['buttons']; $max_buttons = $db_device['buttons'];
if (!empty($db_device['addon_buttons'])){ if (!empty($db_device['addon_buttons'])) {
$max_buttons += $db_device['addon_buttons']; $max_buttons += $db_device['addon_buttons'];
} }
$show_buttons = $max_buttons; $show_buttons = $max_buttons;
@ -90,12 +90,12 @@ if (!empty($_REQUEST['ru_id'])) {
</div></div> </div></div>
<?php <?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]); // print_r($db_buttons[$line_id]);
$show_form_mode = ''; $show_form_mode = '';
$defaul_tv = (empty($db_buttons[$line_id])) ? "empty": $db_buttons[$line_id]['buttontype']; $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_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']); $defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',', $db_buttons[$line_id]['options']);
$show_form_mode = $defaul_tv; $show_form_mode = $defaul_tv;
$def_hint = ''; // Hint check Box $def_hint = ''; // Hint check Box
@ -104,17 +104,17 @@ if (!empty($_REQUEST['ru_id'])) {
$def_silent = ''; $def_silent = '';
$defaul_advline = ''; $defaul_advline = '';
$defaul_ftr = ''; $defaul_ftr = '';
if (strpos($defaul_btn,'@') >0) { if (strpos($defaul_btn, '@') >0) {
$defaul_tv = 'adv.line'; $defaul_tv = 'adv.line';
$show_form_mode = 'adv.line'; $show_form_mode = 'adv.line';
$defaul_btn = strtok($defaul_btn,'@'); $defaul_btn = strtok($defaul_btn, '@');
$defaul_advline = strtok('@'); $defaul_advline = strtok('@');
} }
if ($line_id == 0) { if ($line_id == 0) {
$show_form_mode = 'line'; $show_form_mode = 'line';
} }
if (stripos($defaul_btn,'!') >0) { if (stripos($defaul_btn, '!') >0) {
$defaul_btn = strtok($defaul_btn,'!'); $defaul_btn = strtok($defaul_btn, '!');
$defaul_tv = 'silent'; $defaul_tv = 'silent';
$def_silent = 'checked'; $def_silent = 'checked';
} }
@ -126,13 +126,13 @@ if (!empty($_REQUEST['ru_id'])) {
} }
foreach ($defaul_opt as $data_i) { foreach ($defaul_opt as $data_i) {
if (strpos($data_i,'@')>0) { if (strpos($data_i, '@')>0) {
$test_btn = strtok($data_i,'@'); $test_btn = strtok($data_i, '@');
$def_hint = 'checked'; $def_hint = 'checked';
$defaul_btn = $data_i; $defaul_btn = $data_i;
$def_hint_btn = $data_i; $def_hint_btn = $data_i;
if ($test_btn == $defaul_opt[0]) { if ($test_btn == $defaul_opt[0]) {
foreach ($lines_list as $data){ foreach ($lines_list as $data) {
if ($data['name']==$test_btn) { if ($data['name']==$test_btn) {
$show_form_mode = 'line'; $show_form_mode = 'line';
$defaul_tv = 'monitor'; $defaul_tv = 'monitor';
@ -163,8 +163,8 @@ if (!empty($_REQUEST['ru_id'])) {
<?php <?php
if ($line_id == 0) { if ($line_id == 0) {
echo '<option value="line" selected >DEF LINE</option>'; echo '<option value="line" selected >DEF LINE</option>';
}else { } else {
foreach ($buttons_type as $data){ foreach ($buttons_type as $data) {
$select = (($data == $defaul_tv)?"selected":""); $select = (($data == $defaul_tv)?"selected":"");
echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>'; echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>';
} }
@ -185,7 +185,7 @@ if (!empty($_REQUEST['ru_id'])) {
<!-- if Line Type = line Show SCCP Num --> <!-- 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';?>" > <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 <?php
foreach ($lines_list as $data){ foreach ($lines_list as $data) {
$select = (($data['name']==$defaul_btn)?"selected":""); $select = (($data['name']==$defaul_btn)?"selected":"");
echo '<option value="'.$data['name'].'" '.$select.' >'.$data['name'].' / '.$data['label'].'</option>'; echo '<option value="'.$data['name'].'" '.$select.' >'.$data['name'].' / '.$data['label'].'</option>';
} }
@ -213,7 +213,7 @@ if (!empty($_REQUEST['ru_id'])) {
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){ foreach ($hint_list as $data) {
$select = (($data['key']==$def_hint_btn)?"selected":""); $select = (($data['key']==$def_hint_btn)?"selected":"");
echo '<option value="'.$data['key'].'" '.$select.' >'.$data['exten'].' / '.$data['label'].'</option>'; echo '<option value="'.$data['key'].'" '.$select.' >'.$data['exten'].' / '.$data['label'].'</option>';
} }

View file

@ -37,11 +37,11 @@ if ($dev_id != '*new*') {
<form autocomplete="off" name="frm_editdialtemplate" id="frm_editbuttons" class="fpbx-submit" action="" method="post" data-id="dial_template"> <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"> <input type="hidden" name="Submit" value="Submit">
<?php <?php
if ($dev_id == '*new*') { if ($dev_id == '*new*') {
echo $this->ShowGroup('sccp_dp_new_template',0,'sccp_dial',$def_val); echo $this->ShowGroup('sccp_dp_new_template', 0, 'sccp_dial', $def_val);
} }
?> ?>
@ -75,6 +75,6 @@ if ($dev_id != '*new*') {
<?php <?php
// echo $this->ShowGroup('sccp_dp_new_template',0,'sccp_dial',$def_val); // 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> </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->dbinterface->get_db_SccpTableData('SccpExtension');
$lines_list = $this->sipconfigs->get_db_sip_TableData('Device'); $lines_list = $this->sipconfigs->get_db_sip_TableData('Device');
//$hint_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($lines_list); // print_r($lines_list);
$line_id =0; $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_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)); $db_device = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_byid', array("id" => $dev_id));
$max_buttons = $db_device['buttons']; $max_buttons = $db_device['buttons'];
if (!empty($db_device['addon_buttons'])){ if (!empty($db_device['addon_buttons'])) {
$max_buttons += $db_device['addon_buttons']; $max_buttons += $db_device['addon_buttons'];
} }
$show_buttons = $max_buttons; $show_buttons = $max_buttons;
@ -87,29 +87,29 @@ if (!empty($_REQUEST['ru_id'])) {
</div></div> </div></div>
<?php <?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]); // print_r($db_buttons[$line_id]);
$show_form_mode = ''; $show_form_mode = '';
$defaul_tv = (empty($db_buttons[$line_id])) ? "empty": $db_buttons[$line_id]['buttontype']; $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_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']); $defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',', $db_buttons[$line_id]['options']);
$show_form_mode = $defaul_tv; $show_form_mode = $defaul_tv;
$def_hint = ''; // Hint check Box $def_hint = ''; // Hint check Box
$def_hint_btn = ''; // Hint Combo Box $def_hint_btn = ''; // Hint Combo Box
$def_silent = ''; $def_silent = '';
$defaul_advline = ''; $defaul_advline = '';
if (strpos($defaul_btn,'@') >0) { if (strpos($defaul_btn, '@') >0) {
$defaul_tv = 'adv.line'; $defaul_tv = 'adv.line';
$show_form_mode = 'adv.line'; $show_form_mode = 'adv.line';
$defaul_btn = strtok($defaul_btn,'@'); $defaul_btn = strtok($defaul_btn, '@');
$defaul_advline = strtok('@'); $defaul_advline = strtok('@');
} }
if ($line_id == 0) { if ($line_id == 0) {
$show_form_mode = 'line'; $show_form_mode = 'line';
} }
if (stripos($defaul_btn,'!') >0) { if (stripos($defaul_btn, '!') >0) {
$defaul_btn = strtok($defaul_btn,'!'); $defaul_btn = strtok($defaul_btn, '!');
$defaul_tv = 'silent'; $defaul_tv = 'silent';
$def_silent = 'checked'; $def_silent = 'checked';
} }
@ -120,13 +120,13 @@ if (!empty($_REQUEST['ru_id'])) {
} }
foreach ($defaul_opt as $data_i) { foreach ($defaul_opt as $data_i) {
if (strpos($data_i,'@')>0) { if (strpos($data_i, '@')>0) {
$test_btn = strtok($data_i,'@'); $test_btn = strtok($data_i, '@');
$def_hint = 'checked'; $def_hint = 'checked';
$defaul_btn = $data_i; $defaul_btn = $data_i;
$def_hint_btn = $data_i; $def_hint_btn = $data_i;
if ($test_btn == $defaul_opt[0]) { if ($test_btn == $defaul_opt[0]) {
foreach ($lines_list as $data){ foreach ($lines_list as $data) {
if ($data['id']==$test_btn) { if ($data['id']==$test_btn) {
$show_form_mode = 'line'; $show_form_mode = 'line';
$defaul_tv = 'monitor'; $defaul_tv = 'monitor';
@ -157,8 +157,8 @@ if (!empty($_REQUEST['ru_id'])) {
<?php <?php
if ($line_id == 0) { if ($line_id == 0) {
echo '<option value="line" selected >DEF LINE</option>'; echo '<option value="line" selected >DEF LINE</option>';
}else { } else {
foreach ($buttons_type as $data){ foreach ($buttons_type as $data) {
$select = (($data == $defaul_tv)?"selected":""); $select = (($data == $defaul_tv)?"selected":"");
echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>'; echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>';
} }
@ -179,7 +179,7 @@ if (!empty($_REQUEST['ru_id'])) {
<!-- if Line Type = line Show SCCP Num --> <!-- 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';?>" > <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 <?php
foreach ($lines_list as $data){ foreach ($lines_list as $data) {
$select = (($data['id']==$defaul_btn)?"selected":""); $select = (($data['id']==$defaul_btn)?"selected":"");
echo '<option value="'.$data['id'].'" '.$select.' >'.$data['id'].' / '.$data['callerid'].'</option>'; echo '<option value="'.$data['id'].'" '.$select.' >'.$data['id'].' / '.$data['callerid'].'</option>';
} }
@ -207,7 +207,7 @@ if (!empty($_REQUEST['ru_id'])) {
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){ foreach ($hint_list as $data) {
$select = (($data['key']==$def_hint_btn)?"selected":""); $select = (($data['key']==$def_hint_btn)?"selected":"");
echo '<option value="'.$data['key'].'" '.$select.' >'.$data['exten'].' / '.$data['label'].'</option>'; echo '<option value="'.$data['key'].'" '.$select.' >'.$data['exten'].' / '.$data['label'].'</option>';
} }

View file

@ -20,7 +20,7 @@
$npref = $form_prefix.'_'; $npref = $form_prefix.'_';
$napref = $form_prefix.'-ar_'; $napref = $form_prefix.'-ar_';
if (empty($form_prefix)){ if (empty($form_prefix)) {
$npref = "sccp_"; $npref = "sccp_";
$napref ="sccp-ar_"; $napref ="sccp-ar_";
} }
@ -60,11 +60,11 @@ if (\FreePBX::Modules()->checkStatus("soundlang")) {
$syslangs = array(); $syslangs = array();
} }
} }
if (function_exists('music_list')){ if (function_exists('music_list')) {
$moh_list = music_list(); $moh_list = music_list();
// $cur = (isset($mohsilence) && $mohsilence != "" ? $mohsilence : 'default'); // $cur = (isset($mohsilence) && $mohsilence != "" ? $mohsilence : 'default');
} }
if (!is_array($moh_list)){ if (!is_array($moh_list)) {
$moh_list = array('default'); $moh_list = array('default');
} }
@ -74,7 +74,7 @@ $items = $itm -> children();
if ($h_show==1) { if ($h_show==1) {
$sec_class =''; $sec_class ='';
if (!empty($items ->class)){ if (!empty($items ->class)) {
$sec_class = (string)$items ->class; $sec_class = (string)$items ->class;
} }
?> ?>
@ -84,7 +84,7 @@ if ($h_show==1) {
</div> </div>
<div class="section <?php echo $sec_class;?>" data-id="<?php echo $npref.$itm['name'];?>"> <div class="section <?php echo $sec_class;?>" data-id="<?php echo $npref.$itm['name'];?>">
<?php <?php
} }
foreach ($items as $child) { foreach ($items as $child) {
if (empty($child->help)) { if (empty($child->help)) {
@ -98,7 +98,7 @@ foreach ($items as $child) {
$res_name = ''; $res_name = '';
$res_oid = (string)$child->input[0]->name; $res_oid = (string)$child->input[0]->name;
$res_id = $npref.$res_oid; $res_id = $npref.$res_oid;
if (!empty($metainfo[$res_oid])){ if (!empty($metainfo[$res_oid])) {
if ($child->meta_help == '1' || $child->help == 'Help!') { if ($child->meta_help == '1' || $child->help == 'Help!') {
$child->help = $metainfo[$res_oid]['Description']; $child->help = $metainfo[$res_oid]['Description'];
} }
@ -106,7 +106,7 @@ foreach ($items as $child) {
// --- Add Hiden option // --- Add Hiden option
$res_sec_class =''; $res_sec_class ='';
if (!empty($child ->class)){ if (!empty($child ->class)) {
$res_sec_class = (string)$child ->class; $res_sec_class = (string)$child ->class;
} }
@ -149,19 +149,24 @@ foreach ($items as $child) {
if (empty($value->class)) { if (empty($value->class)) {
$value->class = 'form-control'; $value->class = 'form-control';
} }
if ($i > 0) echo $child->nameseparator; if ($i > 0) {
echo $child->nameseparator;
}
// //
echo '<input type="' . $value->type . '" class="' . $value->class . '" id="' . $res_id . '" name="' . $res_name . '" value="' . $value->value.'"'; echo '<input type="' . $value->type . '" class="' . $value->class . '" id="' . $res_id . '" name="' . $res_name . '" value="' . $value->value.'"';
if (isset($value->options)){ if (isset($value->options)) {
foreach ($value->options ->attributes() as $optkey =>$optval){ foreach ($value->options ->attributes() as $optkey => $optval) {
echo ' '.$optkey.'="'.$optval.'"'; echo ' '.$optkey.'="'.$optval.'"';
} }
} }
if (!empty($value->min)) echo ' min="'.$value->min.'"'; if (!empty($value->min)) {
if (!empty($value->max)) echo ' max="'.$value->max.'"'; echo ' min="'.$value->min.'"';
}
if (!empty($value->max)) {
echo ' max="'.$value->max.'"';
}
echo '>'; echo '>';
$i ++; $i ++;
} }
?> ?>
</div> </div>
@ -173,7 +178,6 @@ foreach ($items as $child) {
<?php <?php
echo '<!-- END '.$child->label.' -->'; echo '<!-- END '.$child->label.' -->';
} }
if ($child['type'] == 'IED') { if ($child['type'] == 'IED') {
$res_input = ''; $res_input = '';
@ -182,7 +186,7 @@ foreach ($items as $child) {
$opt_at = array(); $opt_at = array();
$res_n = (string)$child->name; $res_n = (string)$child->name;
if (!empty($metainfo[$res_n])){ if (!empty($metainfo[$res_n])) {
if ($child->meta_help == '1' || $child->help == 'Help!') { if ($child->meta_help == '1' || $child->help == 'Help!') {
$child->help = $metainfo[$res_n]['Description']; $child->help = $metainfo[$res_n]['Description'];
} }
@ -225,10 +229,10 @@ foreach ($items as $child) {
foreach ($child->xpath('cbutton') as $value) { foreach ($child->xpath('cbutton') as $value) {
$res_n = $res_id.'[0]['.$value['field'].']'; $res_n = $res_id.'[0]['.$value['field'].']';
$res_vf = ''; $res_vf = '';
if ($value['value']=='NONE' && empty($res_value)){ if ($value['value']=='NONE' && empty($res_value)) {
$res_vf = 'active'; $res_vf = 'active';
} }
$ch_key = array_search($value['value'],$res_value); $ch_key = array_search($value['value'], $res_value);
if ($ch_key !== false) { if ($ch_key !== false) {
unset($res_value[$ch_key]); unset($res_value[$ch_key]);
$res_vf = 'active'; $res_vf = 'active';
@ -284,15 +288,14 @@ foreach ($items as $child) {
$opt_at[$fields_id]['nameseparator']=(string)$value['nameseparator']; $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].'"'; echo '<input type="text" name="'. $res_n.'" class="'.$opt_at[$fields_id]['class'].'" value="'.$res_vf[$i2].'"';
if (isset($value->options)){ if (isset($value->options)) {
foreach ($value->options ->attributes() as $optkey =>$optval){ foreach ($value->options ->attributes() as $optkey => $optval) {
$opt_at[$fields_id]['options'][$optkey]=(string)$optval; $opt_at[$fields_id]['options'][$optkey]=(string)$optval;
echo ' '.$optkey.'="'.$optval.'"'; echo ' '.$optkey.'="'.$optval.'"';
} }
} }
echo '> '.(string)$value['nameseparator'].' '; echo '> '.(string)$value['nameseparator'].' ';
$i2 ++; $i2 ++;
} }
if (!empty($child->add_pluss)) { 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 '<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>';
@ -321,13 +324,12 @@ foreach ($items as $child) {
</div> </div>
<?php <?php
echo '<!-- END '.$child->label.' -->'; echo '<!-- END '.$child->label.' -->';
} }
if ($child['type'] == 'IS') { if ($child['type'] == 'IS') {
$res_n = (string)$child->name; $res_n = (string)$child->name;
$res_id = $npref.$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!') { if ($child->meta_help == '1' || $child->help == 'Help!') {
$child->help = $metainfo[$res_n]['Description']; $child->help = $metainfo[$res_n]['Description'];
} }
@ -335,7 +337,7 @@ foreach ($items as $child) {
// --- Add Hiden option // --- Add Hiden option
$res_sec_class =''; $res_sec_class ='';
if (!empty($child ->class)){ if (!empty($child ->class)) {
$res_sec_class = (string)$child ->class; $res_sec_class = (string)$child ->class;
} }
@ -376,7 +378,7 @@ foreach ($items as $child) {
} }
foreach ($child->xpath('button') as $value) { foreach ($child->xpath('button') as $value) {
$val_check = (string)$value[@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" : ""); $val_check = (((string)$value[@value] == $res_v) ? " checked" : "");
} else { } else {
$val_check = (strtolower((string)$value[@value]) == strtolower($res_v) ? " checked" : ""); $val_check = (strtolower((string)$value[@value]) == strtolower($res_v) ? " checked" : "");
@ -395,7 +397,6 @@ foreach ($items as $child) {
<?php <?php
echo '<!-- END '.$child->label.' -->'; echo '<!-- END '.$child->label.' -->';
} }
/* /*
@ -407,11 +408,11 @@ foreach ($items as $child) {
* SLP - Dial Paterns * 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; // $value = $child -> select;
$res_n = (string)$child ->name; $res_n = (string)$child ->name;
$res_id = $npref.$res_n; $res_id = $npref.$res_n;
if (!empty($metainfo[$res_n])){ if (!empty($metainfo[$res_n])) {
if ($child->meta_help == '1' || $child->help == 'Help!') { if ($child->meta_help == '1' || $child->help == 'Help!') {
$child->help = $metainfo[$res_n]['Description']; $child->help = $metainfo[$res_n]['Description'];
} }
@ -480,7 +481,6 @@ foreach ($items as $child) {
</div> </div>
<?php <?php
echo '<!-- END '.$child->label.' -->'; echo '<!-- END '.$child->label.' -->';
} }
/* /*
* Input element Select SLS - System Language * Input element Select SLS - System Language
@ -492,7 +492,7 @@ foreach ($items as $child) {
$res_id = $npref.$res_n; $res_id = $npref.$res_n;
$child->value =''; $child->value ='';
if (!empty($metainfo[$res_n])){ if (!empty($metainfo[$res_n])) {
if ($child->meta_help == '1' || $child->help == 'Help!') { if ($child->meta_help == '1' || $child->help == 'Help!') {
$child->help = $metainfo[$res_n]['Description']; $child->help = $metainfo[$res_n]['Description'];
} }
@ -534,8 +534,8 @@ foreach ($items as $child) {
} }
} }
if (empty($child->value)){ if (empty($child->value)) {
if (!empty($child->default)){ if (!empty($child->default)) {
$child->value = $child->default; $child->value = $child->default;
} }
} }
@ -575,7 +575,6 @@ foreach ($items as $child) {
<!--END System Language--> <!--END System Language-->
<?php <?php
echo '<!-- END '.$child->label.' -->'; echo '<!-- END '.$child->label.' -->';
} }
/* /*
* Input element Select * Input element Select
@ -585,7 +584,7 @@ foreach ($items as $child) {
$res_n = (string)$child->name; $res_n = (string)$child->name;
$res_id = $npref.$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!') { if ($child->meta_help == '1' || $child->help == 'Help!') {
$child->help = $metainfo[$res_n]['Description']; $child->help = $metainfo[$res_n]['Description'];
} }
@ -646,7 +645,7 @@ foreach ($items as $child) {
$res_n = (string)$child ->name; $res_n = (string)$child ->name;
$res_id = $npref.$res_n; $res_id = $npref.$res_n;
if (!empty($metainfo[$res_n])){ if (!empty($metainfo[$res_n])) {
if ($child->meta_help == '1' || $child->help == 'Help!') { if ($child->meta_help == '1' || $child->help == 'Help!') {
$child->help = $metainfo[$res_n]['Description']; $child->help = $metainfo[$res_n]['Description'];
} }
@ -694,8 +693,8 @@ foreach ($items as $child) {
</div> </div>
<div class="col-md-9"><div class = "lnet form-group form-inline" data-nextid=1> <?php <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 . '"'; echo '<select name="'.$res_id.'" class="'. $child->class . '" id="' . $res_id . '"';
if (isset($child->options)){ if (isset($child->options)) {
foreach ($child->options->attributes() as $optkey =>$optval){ foreach ($child->options->attributes() as $optkey => $optval) {
echo ' '.$optkey.'="'.$optval.'"'; echo ' '.$optkey.'="'.$optval.'"';
} }
} }
@ -719,14 +718,14 @@ foreach ($items as $child) {
if ($key == $data[$fld]) { if ($key == $data[$fld]) {
echo ' selected="selected"'; echo ' selected="selected"';
} }
if (!empty($flk)){ if (!empty($flk)) {
echo ' data-id="'.$data[$flk].'"'; echo ' data-id="'.$data[$flk].'"';
} }
if (!empty($flkv)){ if (!empty($flkv)) {
echo ' data-val="'.$data[$flkv].'"'; echo ' data-val="'.$data[$flkv].'"';
} }
echo '>' . $data[$flv]; echo '>' . $data[$flv];
if (!empty($flv2)){ if (!empty($flv2)) {
echo ' / '.$data[$flv2]; echo ' / '.$data[$flv2];
} }
echo '</option>'; echo '</option>';
@ -741,7 +740,6 @@ foreach ($items as $child) {
</div> </div>
<?php <?php
echo '<!-- END '.$child->label.' -->'; echo '<!-- END '.$child->label.' -->';
} }
if ($child['type'] == 'ITED') { if ($child['type'] == 'ITED') {
$res_input = ''; $res_input = '';
@ -790,8 +788,8 @@ foreach ($items as $child) {
} }
$opt_at[$fields_id]['type']=(string)$value['type']; $opt_at[$fields_id]['type']=(string)$value['type'];
$res_opt['addon'] =''; $res_opt['addon'] ='';
if (isset($value->options)){ if (isset($value->options)) {
foreach ($value->options ->attributes() as $optkey =>$optval){ foreach ($value->options ->attributes() as $optkey => $optval) {
$opt_at[$fields_id]['options'][$optkey]=(string)$optval; $opt_at[$fields_id]['options'][$optkey]=(string)$optval;
$res_opt['addon'] .=' '.$optkey.'="'.$optval.'"'; $res_opt['addon'] .=' '.$optkey.'="'.$optval.'"';
} }
@ -800,7 +798,7 @@ foreach ($items as $child) {
echo '<td class="">'; 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_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>'; $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': case 'date':
echo $res_opt['inp_st'].'<input type="date" name="'. $res_n.'" value="'.$res_vf[$i2].'"'.$res_opt['addon']. '>'.$res_opt['inp_end']; echo $res_opt['inp_st'].'<input type="date" name="'. $res_n.'" value="'.$res_vf[$i2].'"'.$res_opt['addon']. '>'.$res_opt['inp_end'];
break; 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']; echo $res_opt['inp_st'].'<input type="text" name="'. $res_n.'" value="'.$res_vf[$i2].'"'.$res_opt['addon']. '>'.$res_opt['inp_end'];
break; break;
case 'title': case 'title':
if ($i > 0 ) { if ($i > 0) {
break; break;
} }
case 'label': case 'label':
@ -821,7 +819,7 @@ foreach ($items as $child) {
case 'select': case 'select':
echo $res_opt['inp_st'].'<select name="'.$res_n.'" id="' . $res_n . '"'. $res_opt['addon'].'>'; echo $res_opt['inp_st'].'<select name="'.$res_n.'" id="' . $res_n . '"'. $res_opt['addon'].'>';
$opt_at[$fields_id]['data']=''; $opt_at[$fields_id]['data']='';
foreach ($value->xpath('data') as $optselect ){ foreach ($value->xpath('data') as $optselect) {
$opt_at[$fields_id]['data'].= (string)$optselect.';'; $opt_at[$fields_id]['data'].= (string)$optselect.';';
echo '<option value="' . $optselect. '"'; echo '<option value="' . $optselect. '"';
if (strtolower((string)$optselect) == strtolower((string)$res_vf[$i2])) { if (strtolower((string)$optselect) == strtolower((string)$res_vf[$i2])) {
@ -834,10 +832,9 @@ foreach ($items as $child) {
} }
echo '</td>'; echo '</td>';
$i2 ++; $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="+" />'; 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 '<input type="button" id="'.$res_id.'-btndel" data-id="'.($i).'" data-for="'.$res_id.'" class="table-js-del" value="-" />';
} }
@ -846,10 +843,9 @@ foreach ($items as $child) {
} }
echo '</table>'; echo '</table>';
echo '<!-- END '.$res_id.' -->'; echo '<!-- END '.$res_id.' -->';
} }
if ($child['type'] == 'HLP' ) { if ($child['type'] == 'HLP') {
$res_n = (string)$child ->name; $res_n = (string)$child ->name;
$res_id = $npref.$res_n; $res_id = $npref.$res_n;
if (empty($child->class)) { if (empty($child->class)) {
@ -867,7 +863,7 @@ foreach ($items as $child) {
<div class="panel-body collapse" id="<?php echo $res_id;?>"> <div class="panel-body collapse" id="<?php echo $res_id;?>">
<?php <?php
foreach ($child->xpath('element') as $value) { foreach ($child->xpath('element') as $value) {
switch ($value['type']){ switch ($value['type']) {
case 'p': case 'p':
case 'h1': case 'h1':
case 'h2': case 'h2':
@ -894,9 +890,8 @@ foreach ($items as $child) {
</div> </div>
<?php <?php
echo '<!-- END '.$child->label.' -->'; echo '<!-- END '.$child->label.' -->';
} }
if ($child['type'] == 'MINFO' ) { if ($child['type'] == 'MINFO') {
$res_n = (string)$child ->name; $res_n = (string)$child ->name;
$res_id = $npref.$res_n; $res_id = $npref.$res_n;
if (empty($child->class)) { if (empty($child->class)) {
@ -933,16 +928,16 @@ foreach ($items as $child) {
$res_id = $npref.$res_n; $res_id = $npref.$res_n;
$child->value =''; $child->value ='';
if (!empty($metainfo[$res_n])){ if (!empty($metainfo[$res_n])) {
if ($child->meta_help == '1' || $child->help == 'Help!') { if ($child->meta_help == '1' || $child->help == 'Help!') {
$child->help = $metainfo[$res_n]['Description']; $child->help = $metainfo[$res_n]['Description'];
} }
} }
$time_regions = array('Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Russian', 'Indian', 'Pacific'); $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_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 = ''; $optgroup = '';
sort($time_zone_list); sort($time_zone_list);
@ -956,7 +951,7 @@ foreach ($items as $child) {
} }
} }
if (empty($child->value)){ if (empty($child->value)) {
$child->value = \date_default_timezone_get(); $child->value = \date_default_timezone_get();
// if (!empty($child->default)){ // if (!empty($child->default)){
// $child->value = $child->default; // $child->value = $child->default;
@ -976,15 +971,21 @@ foreach ($items as $child) {
echo '<select name="'.$res_id.'" class="'. $child->class . '" id="' . $res_id . '">'; echo '<select name="'.$res_id.'" class="'. $child->class . '" id="' . $res_id . '">';
foreach ($time_zone_list as $opt_key) { foreach ($time_zone_list as $opt_key) {
$z = explode('/', $opt_key, 2); $z = explode('/', $opt_key, 2);
if (count($z) != 2 || !in_array($z[0], $time_regions)) continue; if (count($z) != 2 || !in_array($z[0], $time_regions)) {
continue;
}
if ($optgroup != $z[0]) { if ($optgroup != $z[0]) {
if ($optgroup !== '') echo '</optgroup>'; if ($optgroup !== '') {
echo '</optgroup>';
}
$optgroup = $z[0]; $optgroup = $z[0];
echo '<optgroup label="' . htmlentities($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>'; 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>'; if ($optgroup !== '') {
echo '</optgroup>';
}
?> </select> ?> </select>
<!-- </div> --> </div> <!-- </div> --> </div>
@ -996,15 +997,12 @@ foreach ($items as $child) {
<!--END System Language--> <!--END System Language-->
<?php <?php
echo '<!-- END '.$child->label.' -->'; echo '<!-- END '.$child->label.' -->';
} }
} }
?> ?>
<?php <?php
if ($h_show==1) { if ($h_show==1) {
echo '</div>'; echo '</div>';
} }
?> ?>

View file

@ -7,7 +7,7 @@
// vim: set ai ts=4 sw=4 ft=phtml: // vim: set ai ts=4 sw=4 ft=phtml:
$roming_enable = ''; $roming_enable = '';
if (!empty($this->sccpvalues['system_rouminguser'])) { if (!empty($this->sccpvalues['system_rouminguser'])) {
if ($this->sccpvalues['system_rouminguser']['data'] == 'yes'){ if ($this->sccpvalues['system_rouminguser']['data'] == 'yes') {
$roming_enable = 'yes'; $roming_enable = 'yes';
} }
} }

View file

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

View file

@ -11,7 +11,7 @@ $def_val = null;
$dev_id = null; $dev_id = null;
$sccp_codec = $this->getCodecs('audio', true); $sccp_codec = $this->getCodecs('audio', true);
$video_codecs = $this->getCodecs('video', 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; $sccp_disalow = $sccp_disalow_def;
if (!empty($_REQUEST['id'])) { 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)); $db_res = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_byid', array("id" => $dev_id));
if (!empty($db_res['allow'])) { if (!empty($db_res['allow'])) {
$i = 1; $i = 1;
foreach(explode(';', $db_res['allow']) as $c){ foreach (explode(';', $db_res['allow']) as $c) {
$codec_list[$c] = $i; $codec_list[$c] = $i;
$i ++; $i ++;
} }
@ -32,7 +32,6 @@ if (!empty($_REQUEST['id'])) {
if (!empty($db_res['disallow'])) { if (!empty($db_res['disallow'])) {
$sccp_disalow = $db_res['disallow']; $sccp_disalow = $db_res['disallow'];
} }
} else { } else {
$codec_list = $sccp_codec; $codec_list = $sccp_codec;
} }

View file

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

View file

@ -22,11 +22,11 @@ if (strlen($data) >0 ){
<input type="hidden" name="Submit" value="Submit"> <input type="hidden" name="Submit" value="Submit">
<?php <?php
echo $this->ShowGroup('sccp_dev_config',1); echo $this->ShowGroup('sccp_dev_config', 1);
echo $this->ShowGroup('sccp_dev_group_config',1); echo $this->ShowGroup('sccp_dev_group_config', 1);
echo $this->ShowGroup('sccp_dev_advconfig',1); echo $this->ShowGroup('sccp_dev_advconfig', 1);
echo $this->ShowGroup('sccp_dev_softkey',1); echo $this->ShowGroup('sccp_dev_softkey', 1);
echo $this->ShowGroup('sccp_dev_url',1); echo $this->ShowGroup('sccp_dev_url', 1);
echo $this->ShowGroup('sccp_hotline_config',1); echo $this->ShowGroup('sccp_hotline_config', 1);
?> ?>
</form> </form>

View file

@ -74,7 +74,7 @@ if (empty($ast_realtime)) {
$rt_sccp = 'SCCP ERROR'; $rt_sccp = 'SCCP ERROR';
$rt_info .= '<div class="alert signature alert-danger"> Error : ' . $value['message'] . '</div>'; $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>'; $rt_info .= '<div> Found error in realtime sectoin [' . $key . '] : ' . $value['message'] . '</div>';
} }
} }
@ -96,7 +96,7 @@ if (empty($conf_realtime)) {
} }
// $mysql_info // $mysql_info
if ($mysql_info['Value'] <= '2000') { 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 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'); '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_dt = new DateTime(null, new DateTimeZone($conf_tz));
$tmp_ofset = $tmp_dt->getOffset(); $tmp_ofset = $tmp_dt->getOffset();
if (($cisco_tz['offset'] != ($tmp_ofset / 60) )) { 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,34 +121,34 @@ global $amp_conf;
if ($test_any == 1) { if ($test_any == 1) {
# Output option list, HTML. # Output option list, HTML.
$timezone_identifiers = DateTimeZone::listIdentifiers(); $timezone_identifiers = DateTimeZone::listIdentifiers();
$timezone_abbreviations = DateTimeZone::listAbbreviations(); $timezone_abbreviations = DateTimeZone::listAbbreviations();
$a = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC ); $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> Help Info:<br><pre>");
print_r("<br>"); print_r("<br>");
//print_r(array_column($timezone_abbreviations, 'timezone_id')); //print_r(array_column($timezone_abbreviations, 'timezone_id'));
print_r($Ts_set); print_r($Ts_set);
$tz_tmp = array(); $tz_tmp = array();
foreach ($timezone_abbreviations as $subArray) { foreach ($timezone_abbreviations as $subArray) {
$dddd = array_search($Ts_set ,array_column($subArray, 'timezone_id')); $dddd = array_search($Ts_set, array_column($subArray, 'timezone_id'));
if (!empty($dddd)) { if (!empty($dddd)) {
$tz_tmp[] = $subArray[$dddd]; $tz_tmp[] = $subArray[$dddd];
} }
} }
if (empty($tz_tmp)) { if (empty($tz_tmp)) {
print_r('erroe'); print_r('erroe');
} }
if (count($tz_tmp)==1) { if (count($tz_tmp)==1) {
$time_set = $tz_tmp[0]; $time_set = $tz_tmp[0];
} else { } else {
$tmp_dt = new DateTime(null, new DateTimeZone($Ts_set)); $tmp_dt = new DateTime(null, new DateTimeZone($Ts_set));
$tmp_ofset = $tmp_dt->getOffset(); $tmp_ofset = $tmp_dt->getOffset();
foreach ($tz_tmp as $subArray) { foreach ($tz_tmp as $subArray) {
@ -156,24 +156,24 @@ if (count($tz_tmp)==1) {
$time_set = $subArray; $time_set = $subArray;
} }
} }
} }
print_r("<br>"); print_r("<br>");
//print_r($time_set); //print_r($time_set);
print_r($this->sccpvalues['ntp_timezone']); print_r($this->sccpvalues['ntp_timezone']);
//print_r($tz_tmp); //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_abbreviations);
//print_r($timezone_identifiers); //print_r($timezone_identifiers);
//print_r($timezone); //print_r($timezone);
//print_r($transitions); //print_r($transitions);
print_r("<br>"); print_r("<br>");
print_r("</pre>"); print_r("</pre>");
// print_r("DIRECT START"); // print_r("DIRECT START");
// print_r($this->sccpvalues['ccm_address']); // print_r($this->sccpvalues['ccm_address']);
//print_r($this->get_php_classes('\\FreePBX\\modules')); //print_r($this->get_php_classes('\\FreePBX\\modules'));
@ -468,7 +468,7 @@ if (!empty($this->info_warning)) {
</div> </div>
</div> </div>
<br> <br>
<?php <?php
} }
if (!empty($this->class_error)) { if (!empty($this->class_error)) {
@ -488,7 +488,7 @@ if (!empty($this->class_error)) {
</div> </div>
</div> </div>
<br> <br>
<?php } ?> <?php } ?>
<div class="fpbx-container container-fluid"> <div class="fpbx-container container-fluid">
<div class="row"> <div class="row">
<div class="container"> <div class="container">

View file

@ -22,12 +22,12 @@
</div> </div>
</div> </div>
<?php <?php
echo $this->ShowGroup('sccp_general',1); echo $this->ShowGroup('sccp_general', 1);
echo $this->ShowGroup('sccp_dev_time_s',1); echo $this->ShowGroup('sccp_dev_time_s', 1);
echo $this->ShowGroup('sccp_net',1); echo $this->ShowGroup('sccp_net', 1);
echo $this->ShowGroup('sccp_lang',1); echo $this->ShowGroup('sccp_lang', 1);
echo $this->ShowGroup('sccp_qos_config',1); echo $this->ShowGroup('sccp_qos_config', 1);
echo $this->ShowGroup('sccp_extpath_config',1); echo $this->ShowGroup('sccp_extpath_config', 1);
?> ?>