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

View file

@ -12,109 +12,127 @@ namespace FreePBX\modules\Sccp_manager\aminterface;
// ************************************************************************** Event *********************************************
abstract class Event extends IncomingMessage {
abstract class Event extends IncomingMessage
{
protected $_events;
public function getName() {
public function getName()
{
return $this->getKey('Event');
}
public function __construct($rawContent) {
public function __construct($rawContent)
{
parent::__construct($rawContent);
$this->_events = array();
$this->_eventsCount = 0;
// $this->_completed = !$this->isList();
}
}
class UnknownEvent extends Event {
public function __construct($rawContent='') {
class UnknownEvent extends Event
{
public function __construct($rawContent = '')
{
print_r($rawContent);
// die();
}
}
class TableStart_Event extends Event {
class TableStart_Event extends Event
{
public function getTableName() {
public function getTableName()
{
return $this->getKey('TableName');
}
}
class TableEnd_Event extends Event {
class TableEnd_Event extends Event
{
public function getTableName() {
public function getTableName()
{
return $this->getKey('TableName');
}
}
class SCCPSoftKeySetEntry_Event extends Event {
class SCCPSoftKeySetEntry_Event extends Event
{
protected $_data;
public function __construct($rawContent) {
public function __construct($rawContent)
{
parent::__construct($rawContent);
return null;
}
}
class SCCPShowSoftKeySetsComplete_Event extends Event {
class SCCPShowSoftKeySetsComplete_Event extends Event
{
public function getListItems() {
public function getListItems()
{
return intval($this->getKey('ListItems'));
}
}
class ExtensionStatus_Event extends Event {
class ExtensionStatus_Event extends Event
{
public function getPrivilege() {
public function getPrivilege()
{
return $this->getKey('Privilege');
}
public function getExtension() {
public function getExtension()
{
return $this->getKey('Exten');
}
public function getContext() {
public function getContext()
{
return $this->getKey('Context');
}
public function getHint() {
public function getHint()
{
return $this->getKey('Hint');
}
public function getStatus() {
public function getStatus()
{
return $this->getKey('Status');
}
}
class SCCPDeviceEntry_Event extends Event
{
}
class SCCPDeviceEntry_Event extends Event {
class SCCPShowDeviceComplete_Event extends Event
{
}
class SCCPShowDeviceComplete_Event extends Event {
public function getListItems() {
public function getListItems()
{
return intval($this->getKey('ListItems'));
}
public function __construct($rawContent) {
public function __construct($rawContent)
{
parent::__construct($rawContent);
$this->_completed = $this->getKey('EventList');
// return null;
}
}
class SCCPShowDevice_Event extends Event {
class SCCPShowDevice_Event extends Event
{
public function getCapabilities() {
public function getCapabilities()
{
$ret = array();
$codecs = explode(", ", substr($this->getKey('Capabilities'), 1, -1));
foreach ($codecs as $codec) {
@ -124,7 +142,8 @@ class SCCPShowDevice_Event extends Event {
return $ret;
}
public function getCodecsPreference() {
public function getCodecsPreference()
{
$ret = array();
$codecs = explode(", ", substr($this->getKey('CodecsPreference'), 1, -1));
foreach ($codecs as $codec) {
@ -133,25 +152,30 @@ class SCCPShowDevice_Event extends Event {
}
return $ret;
}
}
class SCCPShowDevicesComplete_Event extends Event {
class SCCPShowDevicesComplete_Event extends Event
{
public function getListItems() {
public function getListItems()
{
return intval($this->getKey('ListItems'));
}
}
class SCCPDeviceButtonEntry_Event extends Event {
class SCCPDeviceButtonEntry_Event extends Event
{
}
class SCCPDeviceLineEntry_Event extends Event {
class SCCPDeviceLineEntry_Event extends Event
{
}
class SCCPDeviceStatisticsEntry_Event extends Event {
class SCCPDeviceStatisticsEntry_Event extends Event
{
}
class SCCPDeviceSpeeddialEntry_Event extends Event {
class SCCPDeviceSpeeddialEntry_Event extends Event
{
}
class ExtensionStateListComplete_Event extends Event {
class ExtensionStateListComplete_Event extends Event
{
}

View file

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

View file

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

View file

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

View file

@ -10,18 +10,21 @@
namespace FreePBX\modules\Sccp_manager;
class oldinterface {
class oldinterface
{
var $error;
public function __construct($parent_class = null) {
public function __construct($parent_class = null)
{
$this->paren_class = $parent_class;
$this->error = "";
}
public function info() {
public function info()
{
$Ver = '13.0.4';
return Array('Version' => $Ver,
return array('Version' => $Ver,
'about' => 'Old interface data ver: ' . $Ver);
}
@ -34,7 +37,8 @@ class oldinterface {
* Replace or dublicate to AMI interface
*/
public function sccp_core_commands($params = array()) {
public function sccp_core_commands($params = array())
{
global $astman;
$cmd_list = array('get_softkey' => array('cmd' => "sccp show softkeyssets", 'param' => ''),
'get_version' => array('cmd' => "sccp show version", 'param' => ''),
@ -77,7 +81,6 @@ class oldinterface {
if (!empty($params['name'])) {
$astman->Command('sccp device ' . $params['name'] . ' ' . $msg);
} else {
}
break;
default:
@ -89,7 +92,8 @@ class oldinterface {
return $result;
}
public function sccp_getdevice_info($dev_id) {
public function sccp_getdevice_info($dev_id)
{
if (empty($dev_id)) {
return array();
}
@ -113,9 +117,9 @@ class oldinterface {
} else {
$res2 = '';
}
$res3['SCCP_Vendor'] = Array('vendor' => strtok($res1, ' '), 'model' => strtok('('), 'model_id' => strtok(')'), 'vendor_addon' => strtok($res2, ' '), 'model_addon' => strtok(' '));
$res3['SCCP_Vendor'] = array('vendor' => strtok($res1, ' '), 'model' => strtok('('), 'model_id' => strtok(')'), 'vendor_addon' => strtok($res2, ' '), 'model_addon' => strtok(' '));
if (empty($res3['SCCP_Vendor']['vendor']) || $res3['SCCP_Vendor']['vendor'] == 'Undefined') {
$res3['SCCP_Vendor'] = Array('vendor' => 'Undefined', 'model' => $res4, 'model_id' => '', 'vendor_addon' => $res3['SCCP_Vendor']['vendor_addon'], 'model_addon' => $res3['SCCP_Vendor']['model_addon']);
$res3['SCCP_Vendor'] = array('vendor' => 'Undefined', 'model' => $res4, 'model_id' => '', 'vendor_addon' => $res3['SCCP_Vendor']['vendor_addon'], 'model_addon' => $res3['SCCP_Vendor']['model_addon']);
// return $res4;
// return array();
}
@ -130,7 +134,8 @@ class oldinterface {
* A function should be used in the form of buttons for getting all hint. Not working. I don't know how to use properly.
*/
public function sccp_list_hints() {
public function sccp_list_hints()
{
$hint_key = array();
$hint_all = $this->sccp_list_all_hints();
foreach ($hint_all as $value) {
@ -143,7 +148,8 @@ class oldinterface {
return $hint_key;
}
public function sccp_list_all_hints() {
public function sccp_list_all_hints()
{
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_hints'));
$ast_out = preg_split("/[\n]/", $ast_out['data']);
$ast_key = array();
@ -171,7 +177,8 @@ class oldinterface {
return $ast_key;
}
public function sccp_realtime_status() {
public function sccp_realtime_status()
{
$ast_res = array();
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_realtime_status'));
$ast_out = preg_split("/[\n]/", $ast_out['data']);
@ -190,7 +197,8 @@ class oldinterface {
// !TODO!: -TODO-: install.php is still using the other version number. This is actually where I use another method ?
public function get_compatible_sccp() {
public function get_compatible_sccp()
{
$res = $this->getSCCPVersion();
if (empty($res)) {
return 0;
@ -220,7 +228,8 @@ class oldinterface {
// return $res["vCode"];
}
public function getSCCPVersion() {
public function getSCCPVersion()
{
$res = $this->getChanSCCPVersion();
if (empty($res)) {
$res = $this->getCoreSCCPVersion();
@ -228,7 +237,8 @@ class oldinterface {
return $res;
}
function getCoreSCCPVersion() {
function getCoreSCCPVersion()
{
$result = array();
$ast_out = $this->sccp_version();
$result["Version"] = $ast_out[0];
@ -252,9 +262,10 @@ class oldinterface {
return $result;
}
private function sccp_version() {
private function sccp_version()
{
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_version'));
if ( ($ast_out['Response'] == 'Error') || (strpos($ast_out['data'], 'No such command') != false) ) {
if (($ast_out['Response'] == 'Error') || (strpos($ast_out['data'], 'No such command') != false)) {
return array('-1');
}
if (preg_match("/Release.*\(/", $ast_out['data'], $matches)) {
@ -265,7 +276,8 @@ class oldinterface {
}
}
function getChanSCCPVersion() {
function getChanSCCPVersion()
{
global $astman;
$result = array();
if (!$astman) {
@ -285,11 +297,9 @@ class oldinterface {
$result["vCode"] = 400;
if ($version_parts[1] == "1") {
$result["vCode"] = 410;
} else
if ($version_parts[1] == "2") {
} elseif ($version_parts[1] == "2") {
$result["vCode"] = 420;
} else
if ($version_parts[1] >= "3") {
} elseif ($version_parts[1] >= "3") {
$result["vCode"] = 430;
}
}
@ -338,7 +348,8 @@ class oldinterface {
return $result;
}
public function sccp_list_keysets() {
public function sccp_list_keysets()
{
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_softkey'));
$ast_out = preg_split("/[\n]/", $ast_out['data']);
@ -364,7 +375,8 @@ class oldinterface {
return $ast_key;
}
public function sccp_get_active_device() {
public function sccp_get_active_device()
{
$ast_out = $this->sccp_core_commands(array('cmd' => 'get_device'));
$ast_out = preg_split("/[\n]/", $ast_out['data']);
@ -397,7 +409,7 @@ class oldinterface {
// list ($descr, $address, $devname, $status, $junk) = $line_arr;
// if (strlen($ast_key[$devname]) < 1) {
if (strlen($devname) > 1) {
$ast_key[$devname] = Array('name' => $devname, 'status' => $status, 'address' => $address, 'descr' => $descr, 'token' => $token);
$ast_key[$devname] = array('name' => $devname, 'status' => $status, 'address' => $address, 'descr' => $descr, 'token' => $token);
}
/*
if (isset($ast_key[$devname])) {
@ -418,7 +430,8 @@ class oldinterface {
* Replace sccp_core_commands($params = array()) {
*/
private function astman_retrieveJSFromMetaData($segment = "") {
private function astman_retrieveJSFromMetaData($segment = "")
{
global $astman;
$params = array();
if ($segment != "") {
@ -434,7 +447,8 @@ class oldinterface {
}
}
private function strpos_array($haystack, $needles) {
private function strpos_array($haystack, $needles)
{
if (is_array($needles)) {
foreach ($needles as $str) {
if (is_array($str)) {
@ -442,22 +456,25 @@ class oldinterface {
} else {
$pos = strpos($haystack, $str);
}
if ($pos !== FALSE) {
if ($pos !== false) {
return $pos;
}
}
} else {
return strpos($haystack, $needles);
}
return FALSE;
return false;
}
private function loc_after($value, $inthat) {
if (!is_bool(strpos($inthat, $value)))
private function loc_after($value, $inthat)
{
if (!is_bool(strpos($inthat, $value))) {
return substr($inthat, strpos($inthat, $value) + strlen($value));
}
}
function getеtestChanSCC() {
function getеtestChanSCC()
{
global $astman;
// $action = Array('SCCPShowGlobals',);
$params = array();
@ -472,7 +489,8 @@ class oldinterface {
/*
* [Segments] => ( [0] => general [1] => device [2] => line [3] => softkey )
*/
function getеtestChanSCCP_GlablsInfo($Segment = '') {
function getеtestChanSCCP_GlablsInfo($Segment = '')
{
global $astman;
$params = array();
@ -498,5 +516,4 @@ class oldinterface {
}
return $metadata;
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -5,7 +5,9 @@
// Templete for Sccp Driver
//
namespace FreePBX\modules\Core\Drivers;
class Sccp extends \FreePBX\modules\Core\Driver {
class Sccp extends \FreePBX\modules\Core\Driver
{
private $data_fld = array("pin"=>'pin', "label" => 'label', "accountcode" => 'account',
"context" =>'lcontext',"incominglimit"=>'incominglimit',
"callgroup"=>'callgroup',"pickupgroup"=>'pickupgroup',
@ -18,7 +20,8 @@ class Sccp extends \FreePBX\modules\Core\Driver {
'namedcallgroup'=>'namedcallgroup', 'namedpickupgroup' => 'namedpickupgroup'
);
public function getInfo() {
public function getInfo()
{
return array(
"rawName" => "sccp",
"hardware" => "sccp_custom",
@ -41,15 +44,16 @@ class Sccp extends \FreePBX\modules\Core\Driver {
return true;
}
*/
public function addDevice($id, $settings) {
public function addDevice($id, $settings)
{
$add_fld = array ("name"=>'label',"outboundcid"=>'cid_num',"langcode"=>'language',"extdisplay"=>'description');
// print_r($_REQUEST);
// echo '<br><br>';
// die(print_r($settings));
// print_r($_REQUEST);
// echo '<br><br>';
// die(print_r($settings));
$settings['cid_num']['value']='';
if (isset($_REQUEST)){
foreach($add_fld as $key => $val) {
if (!empty($_REQUEST[$key])){
if (isset($_REQUEST)) {
foreach ($add_fld as $key => $val) {
if (!empty($_REQUEST[$key])) {
$settings[$val]['value'] = $_REQUEST[$key];
}
}
@ -59,9 +63,9 @@ class Sccp extends \FreePBX\modules\Core\Driver {
}
$sql = 'INSERT INTO sccpline (name';
$sqlv = 'values ("'.$id.'"';
foreach($this->data_fld as $key => $val) {
if (!empty($settings[$val]) ) {
if (!empty($settings[$val]['value'])){
foreach ($this->data_fld as $key => $val) {
if (!empty($settings[$val])) {
if (!empty($settings[$val]['value'])) {
$sql .= ', '.$key;
$sqlv .= ", '".$settings[$val]['value']."' ";
}
@ -73,7 +77,8 @@ class Sccp extends \FreePBX\modules\Core\Driver {
return true;
}
public function delDevice($id) {
public function delDevice($id)
{
$sql = "DELETE FROM sccpline WHERE name = ?";
$sth = $this->database->prepare($sql);
$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();
// $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 .= " FROM sccpline WHERE name = ?";
@ -97,12 +103,14 @@ class Sccp extends \FreePBX\modules\Core\Driver {
$result = $sth->fetch(\PDO::FETCH_ASSOC);
$tech = $result;
$tech['dial']='SCCP/'.$id;
} catch(\Exception $e) {}
} catch (\Exception $e) {
}
return $tech;
}
public function getDefaultDeviceSettings($id, $displayname, &$flag) {
public function getDefaultDeviceSettings($id, $displayname, &$flag)
{
$dial = 'SCCP';
$settings = 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.
public function getDeviceDisplay($display, $deviceInfo, $currentcomponent, $primarySection) {
public function getDeviceDisplay($display, $deviceInfo, $currentcomponent, $primarySection)
{
$section = _("Settings");
$category = "general";
$tmparr = array();
$tt = _("The maximum number of incoming calls on this line.");
// $tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '2', 'tt' => $tt, 'level' => 0, 'jsvalidation' => 'isEmpty()', 'failvalidationmsg' => $msgInvalidChannel);
// !TODO!: Please change the default value for incominglimit to '6' or higher
// $tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '2', 'tt' => $tt, 'level' => 0, 'jsvalidation' => 'isEmpty()', 'failvalidationmsg' => $msgInvalidChannel);
// !TODO!: Please change the default value for incominglimit to '6' or higher
$tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '2', 'tt' => $tt, 'level' => 1);
$tt = _("Asterisk context which this line will use to send and receive calls (Note: Only change this is you know what you are doing).");
$tmparr['lcontext'] = array('prompttext' => _('Line context'), 'value' => 'from-internal', 'tt' => $tt, 'level' => 1);
// !TODO!: -TODO-: Maybe completely remove support for old numberic callgroup/pickupgroup in favor of the named version ? See Sccp.class.php.v431
// !TODO!: -TODO-: Maybe completely remove support for old numberic callgroup/pickupgroup in favor of the named version ? See Sccp.class.php.v431
$tt = _("Phone call group (numeric only, example:1,3-4)");
$tmparr['callgroup'] = array('prompttext' => _('Call group id'),'value' => '', 'tt' => $tt, 'level' => 1);
// !TODO!: -TODO-: multiple allowed (not sure if that is implemented here). See Sccp.class.php.v431
// !TODO!: -TODO-: multiple allowed (not sure if that is implemented here). See Sccp.class.php.v431
$tt = _("Phone named call group (>asterisk-11)");
$tmparr['namedcallgroup'] = array('prompttext' => _('Named Call Group'),'value' => '', 'tt' => $tt, 'level' => 1);
$tt = _("Sets the pickup group (numeric only, example:1,3-4) this line is a member of. Allows this line to pickup calls from remote phones which are in this callhroup.");
$tmparr['pickupgroup'] = array('prompttext' => _('Pickup group id'),'value' => '', 'tt' => $tt, 'level' => 1);
// !TODO!: -TODO-: multiple allowed (not sure if that is implemented here). See Sccp.class.php.v431
// !TODO!: -TODO-: multiple allowed (not sure if that is implemented here). See Sccp.class.php.v431
$tt = _("Sets the named pickup name group this line is a member of. Allows this line to pickup calls from remote phones which are in this name callgroup (>asterisk-11).");
$tmparr['namedpickupgroup'] = array('prompttext' => _('Named Pickup Group'),'value' => '', 'tt' => $tt, 'level' => 1);
@ -249,8 +258,8 @@ class Sccp extends \FreePBX\modules\Core\Driver {
$select[] = array( 'value' => '0x7A', 'text' => 'MLPP Bpa');
$select[] = array( 'value' => '0x7B', 'text' => 'MLPP Bnea');
$select[] = array( 'value' => '0x7C', 'text' => 'MLPP Upa');
/* !TODO!: +TODO+: I would remove the values below this line, except for 'No Tone' */
// $select[] = array( 'value' => '0x7F', 'text' => 'No Tone');
/* !TODO!: +TODO+: I would remove the values below this line, except for 'No Tone' */
// $select[] = array( 'value' => '0x7F', 'text' => 'No Tone');
$select[] = array( 'value' => '0x80', 'text' => 'Meetme Greeting Tone');
$select[] = array( 'value' => '0x81', 'text' => 'Meetme Number Invalid Tone');
$select[] = array( 'value' => '0x82', 'text' => 'Meetme Number Failed Tone');
@ -267,7 +276,7 @@ class Sccp extends \FreePBX\modules\Core\Driver {
$tt = _("Outside dialtone frequency (defaul 0x22)");
$tmparr['secondary_dialtone_tone'] = array('prompttext' => _('Secondary dialtone'), 'value' => '0x22', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'select');
# !TODO!: -TODO-: is there no easier way to specify a boolean radio group ? No.
# !TODO!: -TODO-: is there no easier way to specify a boolean radio group ? No.
unset($select);
$select[] = array('value' => 'yes', 'text' => 'Yes');
$select[] = array('value' => 'no', 'text' => 'No');
@ -285,8 +294,8 @@ class Sccp extends \FreePBX\modules\Core\Driver {
$select[] = array('value' => 'reject', 'text' => 'Reject');
$select[] = array('value' => 'silent', 'text' => 'Silent');
$select[] = array('value' => 'UserDefined', 'text' => 'UserDefined');
# !TODO!: -TODO-: The next entry should be "null/empty" (not UserDefined) -> to indicate the trie-state behaviour
# !TODO!: -TODO-: Userdefined is also a possible state, but it is not used or implemented (and it should not be implemented here, i think). See Sccp.class.php.v431, See Sccp.class.php - Old Style
# !TODO!: -TODO-: The next entry should be "null/empty" (not UserDefined) -> to indicate the trie-state behaviour
# !TODO!: -TODO-: Userdefined is also a possible state, but it is not used or implemented (and it should not be implemented here, i think). See Sccp.class.php.v431, See Sccp.class.php - Old Style
$tt = _("DND: How will dnd react when it is set on the device level dnd can have three states: off / busy(reject) / silent / UserDefined").'<br>'.
_("UserDefined - dnd that cycles through all three states off -> reject -> silent -> off (this is the normal behaviour)").'<br>'.
_("Reject - Usesr can only switch off and on (in reject/busy mode)").'<br>'.
@ -301,7 +310,7 @@ class Sccp extends \FreePBX\modules\Core\Driver {
unset($select);
$select[] = array('value' => 'default', 'text' => _('default'));
if (function_exists('music_list')){
if (function_exists('music_list')) {
$moh_list = music_list();
} else {
$moh_list = array('default');

View file

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

View file

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

View file

@ -1,5 +1,7 @@
<?php /* $Id:$ */
if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); }
if (!defined('FREEPBX_IS_AUTH')) {
die('No direct script access allowed');
}
// License for all code of this FreePBX module can be found in the license file inside the module directory
// Copyright 2015 Sangoma Technologies.
//
@ -33,14 +35,14 @@ if (empty($spage->class_error)) {
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
<div class="wrapper">
<ul class="nav nav-tabs list" role="tablist">
<?php foreach($display_page as $key => $page) { ?>
<?php foreach ($display_page as $key => $page) { ?>
<li data-name="<?php echo $key?>" class="change-tab <?php echo $key == 'general' ? 'active' : ''?>"><a href="#<?php echo $key?>" aria-controls="<?php echo $key?>" role="tab" data-toggle="tab"><?php echo $page['name']?></a></li>
<?php } ?>
</ul>
</div>
</div>
<div class="tab-content display">
<?php foreach($display_page as $key => $page) { ?>
<?php foreach ($display_page as $key => $page) { ?>
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
<?php echo $page['content']?>
</div>

View file

@ -1,5 +1,7 @@
<?php /* $Id:$ */
if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); }
if (!defined('FREEPBX_IS_AUTH')) {
die('No direct script access allowed');
}
// License for all code of this FreePBX module can be found in the license file inside the module directory
// Copyright 2015 Sangoma Technologies.
//
@ -34,14 +36,14 @@ if (empty($spage->class_error)) {
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
<div class="wrapper">
<ul class="nav nav-tabs list" role="tablist">
<?php foreach($display_page as $key => $page) { ?>
<?php foreach ($display_page as $key => $page) { ?>
<li data-name="<?php echo $key?>" class="change-tab <?php echo $key == 'general' ? 'active' : ''?>"><a href="#<?php echo $key?>" aria-controls="<?php echo $key?>" role="tab" data-toggle="tab"><?php echo $page['name']?></a></li>
<?php } ?>
</ul>
</div>
</div>
<div class="tab-content display">
<?php foreach($display_page as $key => $page) { ?>
<?php foreach ($display_page as $key => $page) { ?>
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
<?php echo $page['content']?>
</div>

View file

@ -1,5 +1,7 @@
<?php /* $Id:$ */
if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); }
if (!defined('FREEPBX_IS_AUTH')) {
die('No direct script access allowed');
}
// License for all code of this FreePBX module can be found in the license file inside the module directory
// Copyright 2015 Sangoma Technologies.
// vim: set ai ts=4 sw=4 ft=php:
@ -22,14 +24,14 @@ $spage = FreePBX::create()->Sccp_manager;
<div class="scroller scroller-right"><i class="glyphicon glyphicon-chevron-right"></i></div>
<div class="wrapper">
<ul class="nav nav-tabs list" role="tablist">
<?php foreach($spage->myShowPage() as $key => $page) { ?>
<?php foreach ($spage->myShowPage() as $key => $page) { ?>
<li data-name="<?php echo $key?>" class="change-tab <?php echo $key == 'general' ? 'active' : ''?>"><a href="#<?php echo $key?>" aria-controls="<?php echo $key?>" role="tab" data-toggle="tab"><?php echo $page['name']?></a></li>
<?php } ?>
</ul>
</div>
</div>
<div class="tab-content display">
<?php foreach($spage->myShowPage() as $key => $page) { ?>
<?php foreach ($spage->myShowPage() as $key => $page) { ?>
<div id="<?php echo $key?>" class="tab-pane <?php echo $key == 'general' ? 'active' : ''?>">
<?php echo $page['content']?>
</div>

View file

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

View file

@ -62,12 +62,12 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
<?php
$i = 0;
foreach ($keynamearray as $key => $value) {
if ($i < 9 ){
if ($i < 9) {
echo '<th data-sortable="false" data-field="'.$key.'">'._($value['sname']).'</th>';
}
$i ++;
}
?>
?>
<th data-field="actions" data-formatter="DispayActionsKeyFormatter"><?php echo _('Actions')?></th>
</tr>
</thead>
@ -106,7 +106,7 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
<?php
$i = 0;
foreach ($keysetarray as $key => $value) {
foreach ($keysetarray as $key => $value) {
if ($i == 0) {
echo '<li role="presentation" data-name="'.$key.'" class="active">';
} 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></li>';
$i ++;
}
}
?>
</ul>
<div class="tab-content display">
<?php
$i = 0;
foreach ($keysetarray as $key => $value) {
foreach ($keysetarray as $key => $value) {
if ($i == 0) {
echo '<div role="tabpanel" id="'.$key.'" class="tab-pane active">';
} else {
@ -137,7 +136,7 @@ $keynamearray = array('onhook' => array(sname => 'ONHOOK', name =>'Display On
echo '<option value="'.$data.'">'.$data.'</option>';
}
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 '</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 '</div></div></div></div>';
$i ++;
}
}
?>
</div>

View file

@ -17,7 +17,7 @@ $def_val['directed_pickup_context'] = array("keyword" => 'directed_pickup_conte
if (!empty($_REQUEST['new_id'])) {
$dev_id = $_REQUEST['new_id'];
$val = str_replace(array('SEP','ATA','VG'), '', $dev_id);
$val = implode('.',sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
$val = implode('.', sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
$def_val['mac'] = array("keyword" => 'mac', "data" => $val, "seq" => "99");
$val = $_REQUEST['type'];
$def_val['type'] = array("keyword" => 'type', "data" => $val, "seq" => "99");
@ -34,27 +34,27 @@ if (!empty($_REQUEST['id'])) {
if (!empty($val)) {
switch ($key) {
case 'type':
$tmp_raw = $this->getSccp_model_information('byid', TRUE, 'all', array('model'=>$val));
$tmp_raw = $this->getSccp_model_information('byid', true, 'all', array('model'=>$val));
if (!empty($tmp_raw[0])) {
$tmp_raw = $tmp_raw[0];
}
if (!empty($tmp_raw['validate'])) {
$tmpar = explode(";",$tmp_raw['validate']);
$tmpar = explode(";", $tmp_raw['validate']);
if ($tmpar[0] != 'yes') {
$device_warning['Image'] = Array('Device firmware not found : '.$tmp_raw['loadimage']);
$device_warning['Image'] = array('Device firmware not found : '.$tmp_raw['loadimage']);
}
if ($tmpar[1] != 'yes') {
$device_warning['Template'] = Array('Missing device configuration template : '. $tmp_raw['nametemplate']);
$device_warning['Template'] = array('Missing device configuration template : '. $tmp_raw['nametemplate']);
}
}
break;
case 'name':
$key = 'mac';
$val = str_replace(array('SEP','ATA','VG'), '', $val);
$val = implode('.',sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
$val = implode('.', sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
break;
case '_hwlang':
$tmpar = explode(":",$val);
$tmpar = explode(":", $val);
$def_val['netlang'] = array("keyword" => 'netlang', "data" => $tmpar[0], "seq" => "99");
$def_val['devlang'] = array("keyword" => 'devlang', "data" => $tmpar[1], "seq" => "99");
break;
@ -102,12 +102,12 @@ if (!empty($device_warning)) {
<input type="hidden" name="Submit" value="Submit">
<?php
if (empty($dev_new)){
if (empty($dev_new)) {
echo '<input type="hidden" name="sccp_deviceid" value="new">';
} else {
echo '<input type="hidden" name="sccp_deviceid" value="'.$dev_id.'">';
}
if (empty($dev_id)){
if (empty($dev_id)) {
echo $this->ShowGroup('sccp_hw_dev', 1, 'sccp_hw', $def_val);
} else {
echo $this->ShowGroup('sccp_hw_dev_edit', 1, 'sccp_hw', $def_val);

View file

@ -12,7 +12,7 @@ if (!empty($_REQUEST['ru_id'])) {
$dev_id = $_REQUEST['ru_id'];
$def_val['id'] = array("keyword" => 'id', "data" => $dev_id, "seq" => "99");
$db_res = $this->dbinterface->get_db_SccpTableData('get_sccpuser', array("id" => $dev_id));
if (!empty($db_res) ) {
if (!empty($db_res)) {
foreach ($db_res as $key => $val) {
if (!empty($val)) {
$def_val[$key] = array("keyword" => $key, "data" => $val, "seq" => "99");

View file

@ -17,7 +17,7 @@ $def_val['directed_pickup_context'] = array("keyword" => 'directed_pickup_conte
if (!empty($_REQUEST['new_id'])) {
$dev_id = $_REQUEST['new_id'];
$val = str_replace(array('SEP','ATA','VG'), '', $dev_id);
$val = implode('.',sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
$val = implode('.', sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
$def_val['mac'] = array("keyword" => 'mac', "data" => $val, "seq" => "99");
$val = $_REQUEST['type'];
$def_val['type'] = array("keyword" => 'type', "data" => $val, "seq" => "99");
@ -34,27 +34,27 @@ if (!empty($_REQUEST['id'])) {
if (!empty($val)) {
switch ($key) {
case 'type':
$tmp_raw = $this->getSccp_model_information('byid', TRUE, 'all', array('model'=>$val));
$tmp_raw = $this->getSccp_model_information('byid', true, 'all', array('model'=>$val));
if (!empty($tmp_raw[0])) {
$tmp_raw = $tmp_raw[0];
}
if (!empty($tmp_raw['validate'])) {
$tmpar = explode(";",$tmp_raw['validate']);
$tmpar = explode(";", $tmp_raw['validate']);
if ($tmpar[0] != 'yes') {
$device_warning['Image'] = Array('Device firmware not found : '.$tmp_raw['loadimage']);
$device_warning['Image'] = array('Device firmware not found : '.$tmp_raw['loadimage']);
}
if ($tmpar[1] != 'yes') {
$device_warning['Template'] = Array('Missing device configuration template : '. $tmp_raw['nametemplate']);
$device_warning['Template'] = array('Missing device configuration template : '. $tmp_raw['nametemplate']);
}
}
break;
case 'name':
$key = 'mac';
$val = str_replace(array('SEP','ATA','VG'), '', $val);
$val = implode('.',sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
$val = implode('.', sscanf($val, '%4s%4s%4s')); // Convert to Cisco display Format
break;
case '_hwlang':
$tmpar = explode(":",$val);
$tmpar = explode(":", $val);
$def_val['netlang'] = array("keyword" => 'netlang', "data" => $tmpar[0], "seq" => "99");
$def_val['devlang'] = array("keyword" => 'devlang', "data" => $tmpar[1], "seq" => "99");
break;
@ -104,12 +104,12 @@ if (!empty($device_warning)) {
<?php
if (empty($dev_new)){
if (empty($dev_new)) {
echo '<input type="hidden" name="sccp_deviceid" value="new">';
} else {
echo '<input type="hidden" name="sccp_deviceid" value="'.$dev_id.'">';
}
if (empty($dev_id)){
if (empty($dev_id)) {
echo $this->ShowGroup('sccp_hw_sip_dev', 1, 'sccp_hw', $def_val);
} else {
echo $this->ShowGroup('sccp_hw_dev_edit', 1, 'sccp_hw', $def_val);

View file

@ -21,7 +21,7 @@ $feature_list= array('parkinglot'=>'Park Slots','monitor'=> "Record Calls",'dev
$lines_list = $this->dbinterface->get_db_SccpTableData('SccpExtension');
//$hint_list = $this->dbinterface->get_db_SccpTableData('SccpExtension');
$hint_list = $this->get_hint_info(true,array('context'=>'park-hints')) ;
$hint_list = $this->get_hint_info(true, array('context'=>'park-hints')) ;
// print_r($hint_list);
$line_id =0;
@ -33,7 +33,7 @@ if (!empty($_REQUEST['id'])) {
$db_buttons = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_buttons', array("id" => $dev_id));
$db_device = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_byid', array("id" => $dev_id));
$max_buttons = $db_device['buttons'];
if (!empty($db_device['addon_buttons'])){
if (!empty($db_device['addon_buttons'])) {
$max_buttons += $db_device['addon_buttons'];
}
$show_buttons = $max_buttons;
@ -90,12 +90,12 @@ if (!empty($_REQUEST['ru_id'])) {
</div></div>
<?php
for ($line_id = 0; $line_id <=$max_buttons; $line_id ++){
for ($line_id = 0; $line_id <=$max_buttons; $line_id ++) {
// print_r($db_buttons[$line_id]);
$show_form_mode = '';
$defaul_tv = (empty($db_buttons[$line_id])) ? "empty": $db_buttons[$line_id]['buttontype'];
$defaul_btn = (empty($db_buttons[$line_id])) ? "": $db_buttons[$line_id]['name'];
$defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',',$db_buttons[$line_id]['options']);
$defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',', $db_buttons[$line_id]['options']);
$show_form_mode = $defaul_tv;
$def_hint = ''; // Hint check Box
@ -104,17 +104,17 @@ if (!empty($_REQUEST['ru_id'])) {
$def_silent = '';
$defaul_advline = '';
$defaul_ftr = '';
if (strpos($defaul_btn,'@') >0) {
if (strpos($defaul_btn, '@') >0) {
$defaul_tv = 'adv.line';
$show_form_mode = 'adv.line';
$defaul_btn = strtok($defaul_btn,'@');
$defaul_btn = strtok($defaul_btn, '@');
$defaul_advline = strtok('@');
}
if ($line_id == 0) {
$show_form_mode = 'line';
}
if (stripos($defaul_btn,'!') >0) {
$defaul_btn = strtok($defaul_btn,'!');
if (stripos($defaul_btn, '!') >0) {
$defaul_btn = strtok($defaul_btn, '!');
$defaul_tv = 'silent';
$def_silent = 'checked';
}
@ -126,13 +126,13 @@ if (!empty($_REQUEST['ru_id'])) {
}
foreach ($defaul_opt as $data_i) {
if (strpos($data_i,'@')>0) {
$test_btn = strtok($data_i,'@');
if (strpos($data_i, '@')>0) {
$test_btn = strtok($data_i, '@');
$def_hint = 'checked';
$defaul_btn = $data_i;
$def_hint_btn = $data_i;
if ($test_btn == $defaul_opt[0]) {
foreach ($lines_list as $data){
foreach ($lines_list as $data) {
if ($data['name']==$test_btn) {
$show_form_mode = 'line';
$defaul_tv = 'monitor';
@ -163,8 +163,8 @@ if (!empty($_REQUEST['ru_id'])) {
<?php
if ($line_id == 0) {
echo '<option value="line" selected >DEF LINE</option>';
}else {
foreach ($buttons_type as $data){
} else {
foreach ($buttons_type as $data) {
$select = (($data == $defaul_tv)?"selected":"");
echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>';
}
@ -185,7 +185,7 @@ if (!empty($_REQUEST['ru_id'])) {
<!-- if Line Type = line Show SCCP Num -->
<select data-type='line' class ="form-control lineid_<?php echo $line_id.(($show_form_mode=='line' || $show_form_mode=='adv.line')?'':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_line';?>" >
<?php
foreach ($lines_list as $data){
foreach ($lines_list as $data) {
$select = (($data['name']==$defaul_btn)?"selected":"");
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" >';
foreach ($hint_list as $data){
foreach ($hint_list as $data) {
$select = (($data['key']==$def_hint_btn)?"selected":"");
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">
<input type="hidden" name="idtemplate" value="<?php echo str_replace('dial','',$dev_id);?>">
<input type="hidden" name="idtemplate" value="<?php echo str_replace('dial', '', $dev_id);?>">
<input type="hidden" name="Submit" value="Submit">
<?php
if ($dev_id == '*new*') {
echo $this->ShowGroup('sccp_dp_new_template',0,'sccp_dial',$def_val);
echo $this->ShowGroup('sccp_dp_new_template', 0, 'sccp_dial', $def_val);
}
?>
@ -75,6 +75,6 @@ if ($dev_id != '*new*') {
<?php
// echo $this->ShowGroup('sccp_dp_new_template',0,'sccp_dial',$def_val);
echo $this->ShowGroup('sccp_dp_template',0,'sccp_dial',$def_val);
echo $this->ShowGroup('sccp_dp_template', 0, 'sccp_dial', $def_val);
?>
</form>

View file

@ -18,7 +18,7 @@ $feature_list= array('parkinglot'=>'Park Slots','monitor'=> "Record Calls",'dev
//$lines_list = $this->dbinterface->get_db_SccpTableData('SccpExtension');
$lines_list = $this->sipconfigs->get_db_sip_TableData('Device');
//$hint_list = $this->dbinterface->get_db_SccpTableData('SccpExtension');
$hint_list = $this->get_hint_info(true,array('context'=>'park-hints')) ;
$hint_list = $this->get_hint_info(true, array('context'=>'park-hints')) ;
// print_r($lines_list);
$line_id =0;
@ -30,7 +30,7 @@ if (!empty($_REQUEST['id'])) {
$db_buttons = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_buttons', array("id" => $dev_id));
$db_device = $this->dbinterface->get_db_SccpTableData('get_sccpdevice_byid', array("id" => $dev_id));
$max_buttons = $db_device['buttons'];
if (!empty($db_device['addon_buttons'])){
if (!empty($db_device['addon_buttons'])) {
$max_buttons += $db_device['addon_buttons'];
}
$show_buttons = $max_buttons;
@ -87,29 +87,29 @@ if (!empty($_REQUEST['ru_id'])) {
</div></div>
<?php
for ($line_id = 0; $line_id <=$max_buttons; $line_id ++){
for ($line_id = 0; $line_id <=$max_buttons; $line_id ++) {
// print_r($db_buttons[$line_id]);
$show_form_mode = '';
$defaul_tv = (empty($db_buttons[$line_id])) ? "empty": $db_buttons[$line_id]['buttontype'];
$defaul_btn = (empty($db_buttons[$line_id])) ? "": $db_buttons[$line_id]['name'];
$defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',',$db_buttons[$line_id]['options']);
$defaul_opt = (empty($db_buttons[$line_id])) ? array(''): explode(',', $db_buttons[$line_id]['options']);
$show_form_mode = $defaul_tv;
$def_hint = ''; // Hint check Box
$def_hint_btn = ''; // Hint Combo Box
$def_silent = '';
$defaul_advline = '';
if (strpos($defaul_btn,'@') >0) {
if (strpos($defaul_btn, '@') >0) {
$defaul_tv = 'adv.line';
$show_form_mode = 'adv.line';
$defaul_btn = strtok($defaul_btn,'@');
$defaul_btn = strtok($defaul_btn, '@');
$defaul_advline = strtok('@');
}
if ($line_id == 0) {
$show_form_mode = 'line';
}
if (stripos($defaul_btn,'!') >0) {
$defaul_btn = strtok($defaul_btn,'!');
if (stripos($defaul_btn, '!') >0) {
$defaul_btn = strtok($defaul_btn, '!');
$defaul_tv = 'silent';
$def_silent = 'checked';
}
@ -120,13 +120,13 @@ if (!empty($_REQUEST['ru_id'])) {
}
foreach ($defaul_opt as $data_i) {
if (strpos($data_i,'@')>0) {
$test_btn = strtok($data_i,'@');
if (strpos($data_i, '@')>0) {
$test_btn = strtok($data_i, '@');
$def_hint = 'checked';
$defaul_btn = $data_i;
$def_hint_btn = $data_i;
if ($test_btn == $defaul_opt[0]) {
foreach ($lines_list as $data){
foreach ($lines_list as $data) {
if ($data['id']==$test_btn) {
$show_form_mode = 'line';
$defaul_tv = 'monitor';
@ -157,8 +157,8 @@ if (!empty($_REQUEST['ru_id'])) {
<?php
if ($line_id == 0) {
echo '<option value="line" selected >DEF LINE</option>';
}else {
foreach ($buttons_type as $data){
} else {
foreach ($buttons_type as $data) {
$select = (($data == $defaul_tv)?"selected":"");
echo '<option value="'.$data.'" '.$select.' >'.$data.'</option>';
}
@ -179,7 +179,7 @@ if (!empty($_REQUEST['ru_id'])) {
<!-- if Line Type = line Show SCCP Num -->
<select data-type='line' class ="form-control lineid_<?php echo $line_id.(($show_form_mode=='line' || $show_form_mode=='adv.line')?'':' hidden');?>" name="<?php echo $forminfo[1]['name'].$line_id.'_line';?>" >
<?php
foreach ($lines_list as $data){
foreach ($lines_list as $data) {
$select = (($data['id']==$defaul_btn)?"selected":"");
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" >';
foreach ($hint_list as $data){
foreach ($hint_list as $data) {
$select = (($data['key']==$def_hint_btn)?"selected":"");
echo '<option value="'.$data['key'].'" '.$select.' >'.$data['exten'].' / '.$data['label'].'</option>';
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -74,7 +74,7 @@ if (empty($ast_realtime)) {
$rt_sccp = 'SCCP ERROR';
$rt_info .= '<div class="alert signature alert-danger"> Error : ' . $value['message'] . '</div>';
}
} else if ($value['status'] == 'ERROR') {
} elseif ($value['status'] == 'ERROR') {
$rt_info .= '<div> Found error in realtime sectoin [' . $key . '] : ' . $value['message'] . '</div>';
}
}
@ -96,7 +96,7 @@ if (empty($conf_realtime)) {
}
// $mysql_info
if ($mysql_info['Value'] <= '2000') {
$this->info_warning['MySql'] = Array('Increase Mysql Group Concat Max. Length', 'Step 1: Go to mysql path <br> nano /etc/my.cnf',
$this->info_warning['MySql'] = array('Increase Mysql Group Concat Max. Length', 'Step 1: Go to mysql path <br> nano /etc/my.cnf',
'Step 2: And add the following line below [mysqld] as shown below <br> [mysqld] <br>group_concat_max_len = 4096 or more',
'Step 3: Save and restart <br> systemctl restart mariadb.service<br> Or <br> service mysqld restart');
}
@ -110,7 +110,7 @@ if ($cisco_tz['offset'] == 0) {
$tmp_dt = new DateTime(null, new DateTimeZone($conf_tz));
$tmp_ofset = $tmp_dt->getOffset();
if (($cisco_tz['offset'] != ($tmp_ofset / 60) )) {
$this->info_warning['NTP'] = Array('The selected NTP time zone is not supported by cisco devices.', 'We will use the Greenwich Time zone');
$this->info_warning['NTP'] = array('The selected NTP time zone is not supported by cisco devices.', 'We will use the Greenwich Time zone');
}
}
}
@ -121,34 +121,34 @@ global $amp_conf;
if ($test_any == 1) {
# Output option list, HTML.
$timezone_identifiers = DateTimeZone::listIdentifiers();
$timezone_abbreviations = DateTimeZone::listAbbreviations();
$a = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC );
$timezone_identifiers = DateTimeZone::listIdentifiers();
$timezone_abbreviations = DateTimeZone::listAbbreviations();
$a = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC);
$Ts_set = $a[200];
$Ts_set = $a[200];
// ************************************************************************************
print_r("<br> Help Info:<br><pre>");
print_r("<br>");
print_r("<br> Help Info:<br><pre>");
print_r("<br>");
//print_r(array_column($timezone_abbreviations, 'timezone_id'));
print_r($Ts_set);
$tz_tmp = array();
print_r($Ts_set);
$tz_tmp = array();
foreach ($timezone_abbreviations as $subArray) {
$dddd = array_search($Ts_set ,array_column($subArray, 'timezone_id'));
foreach ($timezone_abbreviations as $subArray) {
$dddd = array_search($Ts_set, array_column($subArray, 'timezone_id'));
if (!empty($dddd)) {
$tz_tmp[] = $subArray[$dddd];
}
}
}
if (empty($tz_tmp)) {
if (empty($tz_tmp)) {
print_r('erroe');
}
if (count($tz_tmp)==1) {
}
if (count($tz_tmp)==1) {
$time_set = $tz_tmp[0];
} else {
} else {
$tmp_dt = new DateTime(null, new DateTimeZone($Ts_set));
$tmp_ofset = $tmp_dt->getOffset();
foreach ($tz_tmp as $subArray) {
@ -156,24 +156,24 @@ if (count($tz_tmp)==1) {
$time_set = $subArray;
}
}
}
}
print_r("<br>");
print_r("<br>");
//print_r($time_set);
print_r($this->sccpvalues['ntp_timezone']);
print_r($this->sccpvalues['ntp_timezone']);
//print_r($tz_tmp);
print_r("<br>");
print_r("<br>");
print_r("<br>");
print_r("<br>");
print_r("<br>");
print_r("<br>");
//print_r($timezone_abbreviations);
//print_r($timezone_identifiers);
//print_r($timezone);
//print_r($transitions);
print_r("<br>");
print_r("</pre>");
print_r("<br>");
print_r("</pre>");
// print_r("DIRECT START");
// print_r($this->sccpvalues['ccm_address']);
//print_r($this->get_php_classes('\\FreePBX\\modules'));
@ -468,7 +468,7 @@ if (!empty($this->info_warning)) {
</div>
</div>
<br>
<?php
<?php
}
if (!empty($this->class_error)) {
@ -488,7 +488,7 @@ if (!empty($this->class_error)) {
</div>
</div>
<br>
<?php } ?>
<?php } ?>
<div class="fpbx-container container-fluid">
<div class="row">
<div class="container">

View file

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