diff --git a/Sccp_manager.class.php b/Sccp_manager.class.php
index 0041013..c58ee8b 100644
--- a/Sccp_manager.class.php
+++ b/Sccp_manager.class.php
@@ -82,746 +82,770 @@
namespace FreePBX\modules;
-class Sccp_manager extends \FreePBX_Helpers implements \BMO {
- /* Field Values for type seq */
- private $pagedata = null;
- private $sccp_driver_ver = '11.4'; // Ver fore SCCP.CLASS.PHP
- public $sccp_branch = 'm'; // Ver fore SCCP.CLASS.PHP
- private $installedLangs = array();
+class Sccp_manager extends \FreePBX_Helpers implements \BMO
+{
+ /* Field Values for type seq */
+ private $pagedata = null;
+ private $sccp_driver_ver = '11.4'; // Ver fore SCCP.CLASS.PHP
+ public $sccp_branch = 'm'; // Ver fore SCCP.CLASS.PHP
+ private $installedLangs = array();
- private $hint_context = array('default' => '@ext-local'); /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Get it from Config !!!
- private $val_null = 'NONE'; /// REPLACE to null Field
- public $sccp_model_list = array();
- private $cnf_wr = null;
- public $sccppath = array();
- public $sccpvalues = array();
- public $sccp_conf_init = array();
- public $xml_data;
- public $class_error; //error construct
- public $info_warning;
- public $sccpHelpInfo = array();
+ private $hint_context = array('default' => '@ext-local'); /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Get it from Config !!!
+ private $val_null = 'NONE'; /// REPLACE to null Field
+ public $sccp_model_list = array();
+ private $cnf_wr = null;
+ public $sccppath = array();
+ public $sccpvalues = array();
+ public $sccp_conf_init = array();
+ public $xml_data;
+ public $class_error; //error construct
+ public $info_warning;
+ public $sccpHelpInfo = array();
- // Move all non sccp_manager specific functions to traits
- use \FreePBX\modules\Sccp_Manager\sccpManTraits\helperFunctions;
- use \FreePBX\modules\Sccp_Manager\sccpManTraits\ajaxHelper; // TODO should migrate this to child class
- use \FreePBX\modules\Sccp_Manager\sccpManTraits\bmoFunctions;
+ // Move all non sccp_manager specific functions to traits
+ use \FreePBX\modules\Sccp_Manager\sccpManTraits\helperFunctions;
+ use \FreePBX\modules\Sccp_Manager\sccpManTraits\ajaxHelper; // TODO should migrate this to child class
+ use \FreePBX\modules\Sccp_Manager\sccpManTraits\bmoFunctions;
- public function __construct($freepbx = null) {
- if ($freepbx == null) {
- throw new Exception("Not given a FreePBX Object");
- }
+ public function __construct($freepbx = null)
+ {
+ if ($freepbx == null) {
+ throw new Exception("Not given a FreePBX Object");
+ }
- $this->class_error = array();
- $this->FreePBX = $freepbx;
- $this->db = $freepbx->Database;
- $this->cnf_wr = \FreePBX::WriteConfig();
- $this->cnf_read = \FreePBX::LoadConfig();
- $driverNamespace = "\\FreePBX\\Modules\\Sccp_manager";
- if (class_exists($driverNamespace, false)) {
- foreach (glob(__DIR__ . "/sccpManClasses/*.class.php") as $driver) {
- if (preg_match("/\/([a-z1-9]*)\.class\.php$/i", $driver, $matches)) {
- $name = $matches[1];
- $class = $driverNamespace . "\\" . $name;
- if (!class_exists($class, false)) {
- include($driver);
- }
- if (class_exists($class, false)) {
- $this->$name = new $class($this);
- } else {
- throw new \Exception("Invalid Class inside in the include folder" . print_r($freepbx));
- }
- }
- }
- } else {
- return;
- }
+ $this->class_error = array();
+ $this->FreePBX = $freepbx;
+ $this->db = $freepbx->Database;
+ $this->cnf_wr = \FreePBX::WriteConfig();
+ $this->cnf_read = \FreePBX::LoadConfig();
+ $driverNamespace = "\\FreePBX\\Modules\\Sccp_manager";
+ if (class_exists($driverNamespace, false)) {
+ foreach (glob(__DIR__ . "/sccpManClasses/*.class.php") as $driver) {
+ if (preg_match("/\/([a-z1-9]*)\.class\.php$/i", $driver, $matches)) {
+ $name = $matches[1];
+ $class = $driverNamespace . "\\" . $name;
+ if (!class_exists($class, false)) {
+ include($driver);
+ }
+ if (class_exists($class, false)) {
+ $this->$name = new $class($this);
+ } else {
+ throw new \Exception("Invalid Class inside in the include folder" . print_r($freepbx));
+ }
+ }
+ }
+ } else {
+ return;
+ }
- //if (!isset(\FreePBX::create()->Sccp_manager)) {
- // This test is a workaround for a bug in BMO/GUIHooks class where
- // doBMOConfigPage is called with an incorrect class (class path instead of class)
- // The __Get override then determines that the class does not exist and so creates a new class Which
- // in turn calls this __construct. This test can be removed when the bug is fixed in FreePBX.
+ //if (!isset(\FreePBX::create()->Sccp_manager)) {
+ // This test is a workaround for a bug in BMO/GUIHooks class where
+ // doBMOConfigPage is called with an incorrect class (class path instead of class)
+ // The __Get override then determines that the class does not exist and so creates a new class Which
+ // in turn calls this __construct. This test can be removed when the bug is fixed in FreePBX.
- //dbug('__construct called', debug_backtrace(2));
+ //dbug('__construct called', debug_backtrace(2));
- $this->sccpvalues = $this->dbinterface->get_db_SccpSetting(); //Initialise core settings
- $this->initializeSccpPath(); //Set required Paths
- $this->updateTimeZone(); // Get timezone from FreePBX
- //$this->findInstLangs();
- // Only data that has been updated (potentially) are the 2 timezone related parameters
- // So save these 2 directly to db in updateTimeZone, rather than rewrite all settings
- //$this->saveSccpSettings();
+ $this->sccpvalues = $this->dbinterface->get_db_SccpSetting(); //Initialise core settings
+ $this->initializeSccpPath(); //Set required Paths
+ $this->updateTimeZone(); // Get timezone from FreePBX
+ //$this->findInstLangs();
+ // Only data that has been updated (potentially) are the 2 timezone related parameters
+ // So save these 2 directly to db in updateTimeZone, rather than rewrite all settings
+ //$this->saveSccpSettings();
- //}
- }
+ //}
+ }
- /*
+ /*
* Generate Input elements in Html Code from sccpgeneral.xml
*/
- public function showGroup($group_name, $show_Header, $form_prefix = 'sccp', $form_values = array(), $defButton = '') {
+ public function showGroup($group_name, $show_Header, $form_prefix = 'sccp', $form_values = array(), $defButton = '')
+ {
- // load xml data - moved from Construct to simplify Construct.
- // TODO: This is static data so only load first time. Left as is for dbug.
- $xml_vars = __DIR__ . '/conf/sccpgeneral.xml.v433';
- $this->xml_data = simplexml_load_file($xml_vars);
- // load metainfo from chan-sccp - help information if not in xml. Only load first time as static data.
- if (empty($this->sccpHelpInfo)) {
- $sysConfiguration = $this->aminterface->getSCCPConfigMetaData('general');
- foreach ($sysConfiguration['Options'] as $key => $valueArray) {
- foreach ($valueArray['Description'] as $descKey => $descValue) {
- $this->sccpHelpInfo[$valueArray['Name']] .= $descValue . '
';
- }
- }
- unset($sysConfiguration);
- }
+ // load xml data - moved from Construct to simplify Construct.
+ // TODO: This is static data so only load first time. Left as is for dbug.
+ $xml_vars = __DIR__ . '/conf/sccpgeneral.xml.v433';
+ $this->xml_data = simplexml_load_file($xml_vars);
+ // load metainfo from chan-sccp - help information if not in xml. Only load first time as static data.
+ if (empty($this->sccpHelpInfo)) {
+ $sysConfiguration = $this->aminterface->getSCCPConfigMetaData('general');
+ foreach ($sysConfiguration['Options'] as $key => $valueArray) {
+ foreach ($valueArray['Description'] as $descKey => $descValue) {
+ $this->sccpHelpInfo[$valueArray['Name']] .= $descValue . '
';
+ }
+ }
+ unset($sysConfiguration);
+ }
- if ((array) $this->xml_data) {
- foreach ($this->xml_data->xpath('//page_group[@name="' . $group_name . '"]') as $item) {
- $htmlret = load_view(__DIR__ . '/views/formShowSysDefs.php', array(
- 'itm' => $item,
- 'h_show' => $show_Header,
- 'form_prefix' => $form_prefix,
- 'fvalues' => $form_values,
- 'installedLangs' => $this->findInstLangs(),
- 'chanSccpHelp' => $this->sccpHelpInfo,
- 'sccp_defaults' => $this->sccpvalues,
- 'defButton' => $defButton
- )
- );
- }
- } else {
- $htmlret = load_view(__DIR__ . '/views/formShowError.php');
- }
- return $htmlret;
- }
+ if ((array) $this->xml_data) {
+ foreach ($this->xml_data->xpath('//page_group[@name="' . $group_name . '"]') as $item) {
+ $htmlret = load_view(
+ __DIR__ . '/views/formShowSysDefs.php',
+ array(
+ 'itm' => $item,
+ 'h_show' => $show_Header,
+ 'form_prefix' => $form_prefix,
+ 'fvalues' => $form_values,
+ 'installedLangs' => $this->findInstLangs(),
+ 'chanSccpHelp' => $this->sccpHelpInfo,
+ 'sccp_defaults' => $this->sccpvalues,
+ 'defButton' => $defButton
+ )
+ );
+ }
+ } else {
+ $htmlret = load_view(__DIR__ . '/views/formShowError.php');
+ }
+ return $htmlret;
+ }
- /*
+ /*
* Load config vars from base array
*/
- public function updateTimeZone() {
- // Get latest FreePBX time $timeZoneOffsetList - need to reflect standard/summer time etc
- $freepbxTZ = \date_default_timezone_get();
- $this->sccpvalues['ntp_timezone']['data'] = $freepbxTZ;
- $TZdata = $this->extconfigs->getExtConfig('sccp_timezone', $freepbxTZ);
- if (!empty($TZdata)) {
- // TODO: Is this correct (storing in hours not minutes)
- $this->sccpvalues['tzoffset']['data'] = $TZdata['offset']/60;
- }
- $this->dbinterface->write('sccpsettings', [$this->sccpvalues['tzoffset'], $this->sccpvalues['ntp_timezone']], 'update');
- //$this->saveSccpSettings([$this->sccpvalues['tzoffset'], $this->sccpvalues['ntp_timezone']]);
+ public function updateTimeZone()
+ {
+ // Get latest FreePBX time $timeZoneOffsetList - need to reflect standard/summer time etc
+ $freepbxTZ = \date_default_timezone_get();
+ $this->sccpvalues['ntp_timezone']['data'] = $freepbxTZ;
+ $TZdata = $this->extconfigs->getExtConfig('sccp_timezone', $freepbxTZ);
+ if (!empty($TZdata)) {
+ // TODO: Is this correct (storing in hours not minutes)
+ $this->sccpvalues['tzoffset']['data'] = $TZdata['offset'] / 60;
+ }
+ $this->dbinterface->write('sccpsettings', [$this->sccpvalues['tzoffset'], $this->sccpvalues['ntp_timezone']], 'update');
+ //$this->saveSccpSettings([$this->sccpvalues['tzoffset'], $this->sccpvalues['ntp_timezone']]);
- }
- /*
+ }
+ /*
* Show form information - General
*/
- public function settingsShowPage() {
- $this->checkTftpMapping();
- $request = $_REQUEST;
- $action = !empty($request['action']) ? $request['action'] : '';
+ public function settingsShowPage()
+ {
+ $this->checkTftpMapping();
+ $request = $_REQUEST;
+ $action = !empty($request['action']) ? $request['action'] : '';
- $this->pagedata = array(
- "general" => array(
- "name" => _("Site Default Settings"),
- "page" => 'views/server.setting.php'
- ),
- "sccpdevice" => array(
- "name" => _("SCCP Device"),
- "page" => 'views/server.device.php'
- ),
- "sccpurl" => array(
- "name" => _("SCCP Device URL"),
- "page" => 'views/server.url.php'
- ),
- "sccpntp" => array(
- "name" => _("SCCP Time"),
- "page" => 'views/server.datetime.php'
- ),
- "sccpcodec" => array(
- "name" => _("SCCP Codec"),
- "page" => 'views/server.codec.php'
- ),
- "sccpadv" => array(
- "name" => _("Advanced SCCP Settings"),
- "page" => 'views/server.advanced.php'
- ),
- "sccpinfo" => array(
- "name" => _("SCCP info"),
- "page" => 'views/server.info.php'
- )
- );
- // If view is set to simple, remove the ntp, codec and advanced tabs
- if (isset($this->sccpvalues['displayconfig']['data']) && ($this->sccpvalues['displayconfig']['data'] == 'sccpsimple')) {
- unset($this->pagedata['sccpntp'], $this->pagedata['sccpcodec'], $this->pagedata['sccpadv'] );
- }
- $this->processPageData();
- return $this->pagedata;
- }
+ $this->pagedata = array(
+ "general" => array(
+ "name" => _("Site Default Settings"),
+ "page" => 'views/server.setting.php'
+ ),
+ "sccpdevice" => array(
+ "name" => _("SCCP Device"),
+ "page" => 'views/server.device.php'
+ ),
+ "sccpurl" => array(
+ "name" => _("SCCP Device URL"),
+ "page" => 'views/server.url.php'
+ ),
+ "sccpntp" => array(
+ "name" => _("SCCP Time"),
+ "page" => 'views/server.datetime.php'
+ ),
+ "sccpcodec" => array(
+ "name" => _("SCCP Codec"),
+ "page" => 'views/server.codec.php'
+ ),
+ "sccpadv" => array(
+ "name" => _("Advanced SCCP Settings"),
+ "page" => 'views/server.advanced.php'
+ ),
+ "sccpinfo" => array(
+ "name" => _("SCCP info"),
+ "page" => 'views/server.info.php'
+ )
+ );
+ // If view is set to simple, remove the ntp, codec and advanced tabs
+ if (isset($this->sccpvalues['displayconfig']['data']) && ($this->sccpvalues['displayconfig']['data'] == 'sccpsimple')) {
+ unset($this->pagedata['sccpntp'], $this->pagedata['sccpcodec'], $this->pagedata['sccpadv']);
+ }
+ $this->processPageData();
+ return $this->pagedata;
+ }
- public function infoServerShowPage() {
- $request = $_REQUEST;
- $action = !empty($request['action']) ? $request['action'] : '';
- $this->pagedata = array(
- "general" => array(
- "name" => _("General SCCP Settings"),
- "page" => 'views/server.info.php'
- ),
- );
- $this->processPageData();
- return $this->pagedata;
- }
+ public function infoServerShowPage()
+ {
+ $request = $_REQUEST;
+ $action = !empty($request['action']) ? $request['action'] : '';
+ $this->pagedata = array(
+ "general" => array(
+ "name" => _("General SCCP Settings"),
+ "page" => 'views/server.info.php'
+ ),
+ );
+ $this->processPageData();
+ return $this->pagedata;
+ }
- public function advServerShowPage() {
- $request = $_REQUEST;
- $action = !empty($request['action']) ? $request['action'] : '';
- $inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : '';
- switch ($inputform) {
- case 'dialplan':
- $this->pagedata = array(
- "general" => array(
- "name" => _("SCCP Dial Plan information"),
- "page" => 'views/form.dptemplate.php'
- )
- );
- break;
- default:
- $this->pagedata = array(
- "general" => array(
- "name" => _("SCCP Model information"),
- "page" => 'views/advserver.model.php'
- ),
- "sccpkeyset" => array(
- "name" => _("SCCP Device Keyset"),
- "page" => 'views/advserver.keyset.php'
- )
- );
- if ($this->sccpvalues['siptftp']['data'] == 'on') {
- $this->pagedata["sccpdialplan"] = array(
- "name" => _("SIP Dial Plan information"),
- "page" => 'views/advserver.dialtemplate.php'
- );
- }
- break;
- }
+ public function advServerShowPage()
+ {
+ $request = $_REQUEST;
+ $action = !empty($request['action']) ? $request['action'] : '';
+ $inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : '';
+ switch ($inputform) {
+ case 'dialplan':
+ $this->pagedata = array(
+ "general" => array(
+ "name" => _("SCCP Dial Plan information"),
+ "page" => 'views/form.dptemplate.php'
+ )
+ );
+ break;
+ default:
+ $this->pagedata = array(
+ "general" => array(
+ "name" => _("SCCP Model information"),
+ "page" => 'views/advserver.model.php'
+ ),
+ "sccpkeyset" => array(
+ "name" => _("SCCP Device Keyset"),
+ "page" => 'views/advserver.keyset.php'
+ )
+ );
+ if ($this->sccpvalues['siptftp']['data'] == 'on') {
+ $this->pagedata["sccpdialplan"] = array(
+ "name" => _("SIP Dial Plan information"),
+ "page" => 'views/advserver.dialtemplate.php'
+ );
+ }
+ break;
+ }
- $this->processPageData();
- return $this->pagedata;
- }
+ $this->processPageData();
+ return $this->pagedata;
+ }
- public function phoneShowPage() {
- $request = $_REQUEST;
- $action = !empty($request['action']) ? $request['action'] : '';
- $inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : '';
- switch ($inputform) {
- case "cisco":
- $this->pagedata = array(
- "general" => array(
- "name" => _("Device configuration"),
- "page" => 'views/form.adddevice.php'
- ),
- "buttons" => array(
- "name" => _("Device Buttons"),
- "page" => 'views/form.buttons.php'
- ),
- "advanced" => array(
- "name" => _("Device SCCP Advanced"),
- "page" => 'views/form.devadvanced.php'
- )
- );
- break;
- case "cisco-sip":
- $this->pagedata = array(
- "general" => array(
- "name" => _("Sip device configuration"),
- "page" => 'views/form.adddevice.php'
- ),
- "buttons" => array(
- "name" => _("Sip device Buttons"),
- "page" => 'views/form.buttons.php'
- )
- );
- break;
+ public function phoneShowPage()
+ {
+ $request = $_REQUEST;
+ $action = !empty($request['action']) ? $request['action'] : '';
+ $inputform = !empty($request['tech_hardware']) ? $request['tech_hardware'] : '';
+ switch ($inputform) {
+ case "cisco":
+ $this->pagedata = array(
+ "general" => array(
+ "name" => _("Device configuration"),
+ "page" => 'views/form.adddevice.php'
+ ),
+ "buttons" => array(
+ "name" => _("Device Buttons"),
+ "page" => 'views/form.buttons.php'
+ ),
+ "advanced" => array(
+ "name" => _("Device SCCP Advanced"),
+ "page" => 'views/form.devadvanced.php'
+ )
+ );
+ break;
+ case "cisco-sip":
+ $this->pagedata = array(
+ "general" => array(
+ "name" => _("Sip device configuration"),
+ "page" => 'views/form.adddevice.php'
+ ),
+ "buttons" => array(
+ "name" => _("Sip device Buttons"),
+ "page" => 'views/form.buttons.php'
+ )
+ );
+ break;
- case "r_user":
- $this->pagedata = array(
- "general" => array(
- "name" => _("Roaming User configuration"),
- "page" => 'views/form.addruser.php'
- ),
- "buttons" => array(
- "name" => _("Device Buttons"),
- "page" => 'views/form.buttons.php'
- ),
- );
- break;
+ case "r_user":
+ $this->pagedata = array(
+ "general" => array(
+ "name" => _("Roaming User configuration"),
+ "page" => 'views/form.addruser.php'
+ ),
+ "buttons" => array(
+ "name" => _("Device Buttons"),
+ "page" => 'views/form.buttons.php'
+ ),
+ );
+ break;
- default:
- $this->pagedata = array(
- "general" => array(
- "name" => _("SCCP Extension"),
- "page" => 'views/hardware.extension.php'
- ),
- "sccpdevice" => array(
- "name" => _("SCCP Phone"),
- "page" => 'views/hardware.phone.php'
- )
- );
- if ($this->sccpvalues['siptftp']['data'] == 'on') {
- $this->pagedata["sipdevice"] = array(
- "name" => _("SIP CISCO Phone"),
- "page" => 'views/hardware.sphone.php'
- );
- }
- break;
- }
- $this->processPageData();
- return $this->pagedata;
- }
+ default:
+ $this->pagedata = array(
+ "general" => array(
+ "name" => _("SCCP Extension"),
+ "page" => 'views/hardware.extension.php'
+ ),
+ "sccpdevice" => array(
+ "name" => _("SCCP Phone"),
+ "page" => 'views/hardware.phone.php'
+ )
+ );
+ if ($this->sccpvalues['siptftp']['data'] == 'on') {
+ $this->pagedata["sipdevice"] = array(
+ "name" => _("SIP CISCO Phone"),
+ "page" => 'views/hardware.sphone.php'
+ );
+ }
+ break;
+ }
+ $this->processPageData();
+ return $this->pagedata;
+ }
- public function processPageData() {
- foreach ($this->pagedata as &$page) {
- // own version of load_view - simplifies passing variables as in object context
- ob_start();
- include($page['page']);
- $page['content'] = ob_get_contents();
- ob_end_clean();
- }
- }
+ public function processPageData()
+ {
+ foreach ($this->pagedata as &$page) {
+ // own version of load_view - simplifies passing variables as in object context
+ ob_start();
+ include($page['page']);
+ $page['content'] = ob_get_contents();
+ ob_end_clean();
+ }
+ }
- /*
+ /*
*
* * Save Hardware Device Information to Db + ???? Create / update XML Profile
*
*/
- function getPhoneButtons($get_settings, $ref_id = '', $ref_type = 'sccpdevice') {
- // get Model Buttons info
- $res = array();
- $def_feature = array('parkinglot' => array('name' => 'P.slot', 'value' => 'default'),
- 'devstate' => array('name' => 'Coffee', 'value' => 'coffee'),
- 'monitor' => array('name' => 'Record Calls', 'value' => '')
- );
+ function getPhoneButtons($get_settings, $ref_id = '', $ref_type = 'sccpdevice')
+ {
+ // get Model Buttons info
+ $res = array();
+ $def_feature = array(
+ 'parkinglot' => array('name' => 'P.slot', 'value' => 'default'),
+ 'devstate' => array('name' => 'Coffee', 'value' => 'coffee'),
+ 'monitor' => array('name' => 'Record Calls', 'value' => '')
+ );
- // $lines_list = $this->dbinterface->getSccpDeviceTableData('SccpExtension');
- $max_btn = (!empty($get_settings['buttonscount']) ? $get_settings['buttonscount'] : 60);
+ // $lines_list = $this->dbinterface->getSccpDeviceTableData('SccpExtension');
+ $max_btn = (!empty($get_settings['buttonscount']) ? $get_settings['buttonscount'] : 60);
- for ($it = 0; $it < $max_btn; $it++) {
- if (!empty($get_settings["button${it}_type"])) {
- $btn_t = $get_settings["button${it}_type"];
- $btn_n = '';
- $btn_opt = '';
- if ($it == 0) {
- $btn_opt = 'default';
- }
- switch ($btn_t) {
- case 'feature':
- $btn_f = $get_settings["button${it}_feature"];
- // $btn_opt = (empty($get_settings['button' . $it . '_fvalue'])) ? '' : $get_settings['button' . $it . '_fvalue'];
- $btn_n = (empty($get_settings["button${it}_flabel"])) ? $def_feature[$btn_f]['name'] : $get_settings["button${it}_flabel"];
- $btn_opt = $btn_f;
- if (!empty($def_feature[$btn_f]['value'])) {
- if (empty($get_settings['button' . $it . '_fvalue'])) {
- $btn_opt .= ',' . $def_feature[$btn_f]['value'];
- } else {
- $btn_opt .= ',' . $get_settings['button' . $it . '_fvalue'];
- }
- if ($btn_f == 'parkinglot') {
- if (!empty($get_settings['button' . $it . '_retrieve'])) {
- $btn_opt .= ',RetrieveSingle';
- }
- }
- }
+ for ($it = 0; $it < $max_btn; $it++) {
+ if (!empty($get_settings["button{$it}_type"])) {
+ $btn_t = $get_settings["button{$it}_type"];
+ $btn_n = '';
+ $btn_opt = '';
+ if ($it == 0) {
+ $btn_opt = 'default';
+ }
+ switch ($btn_t) {
+ case 'feature':
+ $btn_f = $get_settings["button{$it}_feature"];
+ // $btn_opt = (empty($get_settings['button' . $it . '_fvalue'])) ? '' : $get_settings['button' . $it . '_fvalue'];
+ $btn_n = (empty($get_settings["button{$it}_flabel"])) ? $def_feature[$btn_f]['name'] : $get_settings["button{$it}_flabel"];
+ $btn_opt = $btn_f;
+ if (!empty($def_feature[$btn_f]['value'])) {
+ if (empty($get_settings['button' . $it . '_fvalue'])) {
+ $btn_opt .= ',' . $def_feature[$btn_f]['value'];
+ } else {
+ $btn_opt .= ',' . $get_settings['button' . $it . '_fvalue'];
+ }
+ if ($btn_f == 'parkinglot') {
+ if (!empty($get_settings['button' . $it . '_retrieve'])) {
+ $btn_opt .= ',RetrieveSingle';
+ }
+ }
+ }
- break;
- case 'monitor':
- $hint = $this->aminterface->core_list_hints();
- foreach ($hint as $key => $value) {
- if ($this->hint_context['default'] != $value) {
- $this->hint_context[$key] = $value;
- }
- }
- $btn_t = 'speeddial';
- $btn_opt = (string) $get_settings["button${it}_line"];
- $db_res = $this->dbinterface->getSccpDeviceTableData('SccpExtension', array('name' => $btn_opt));
- $btn_n = $db_res[0]['label'];
- $btn_opt .= ',' . $btn_opt . $this->hint_context['default'];
- break;
- case 'speeddial':
- if (!empty($get_settings["button${it}_input"])) {
- $btn_n = $get_settings["button${it}_input"];
- }
- if (!empty($get_settings["button${it}_phone"])) {
- $btn_opt = $get_settings["button${it}_phone"];
- if (empty($btn_n)) {
- $btn_n = $btn_opt;
- }
- }
+ break;
+ case 'monitor':
+ $hint = $this->aminterface->core_list_hints();
+ foreach ($hint as $key => $value) {
+ if ($this->hint_context['default'] != $value) {
+ $this->hint_context[$key] = $value;
+ }
+ }
+ $btn_t = 'speeddial';
+ $btn_opt = (string) $get_settings["button{$it}_line"];
+ $db_res = $this->dbinterface->getSccpDeviceTableData('SccpExtension', array('name' => $btn_opt));
+ $btn_n = $db_res[0]['label'];
+ $btn_opt .= ',' . $btn_opt . $this->hint_context['default'];
+ break;
+ case 'speeddial':
+ if (!empty($get_settings["button{$it}_input"])) {
+ $btn_n = $get_settings["button{$it}_input"];
+ }
+ if (!empty($get_settings["button{$it}_phone"])) {
+ $btn_opt = $get_settings["button{$it}_phone"];
+ if (empty($btn_n)) {
+ $btn_n = $btn_opt;
+ }
+ }
- if (!empty($get_settings["button${it}_hint"])) {
- if ($get_settings["button${it}_hint"] == "hint") {
- if (empty($btn_n)) {
- $btn_t = 'line';
- $btn_n = $get_settings["button${it}_hline"] . '!silent';
- $btn_opt = '';
- } else {
- // $btn_opt .= ',' . $get_settings['button' . $it . '_hline'] . $this->hint_context['default'];
- $btn_opt .= ',' . $get_settings["button${it}_hline"];
- }
- }
- }
- break;
- case 'adv.line':
- $btn_t = 'line';
- $btn_n = (string) $get_settings["button${it}_line"];
- $btn_n .= '@' . (string) $get_settings["button${it}_advline"];
- $btn_opt = (string) $get_settings["button${it}_advopt"];
+ if (!empty($get_settings["button{$it}_hint"])) {
+ if ($get_settings["button{$it}_hint"] == "hint") {
+ if (empty($btn_n)) {
+ $btn_t = 'line';
+ $btn_n = $get_settings["button{$it}_hline"] . '!silent';
+ $btn_opt = '';
+ } else {
+ // $btn_opt .= ',' . $get_settings['button' . $it . '_hline'] . $this->hint_context['default'];
+ $btn_opt .= ',' . $get_settings["button{$it}_hline"];
+ }
+ }
+ }
+ break;
+ case 'adv.line':
+ $btn_t = 'line';
+ $btn_n = (string) $get_settings["button{$it}_line"];
+ $btn_n .= '@' . (string) $get_settings["button{$it}_advline"];
+ $btn_opt = (string) $get_settings["button{$it}_advopt"];
- break;
- case 'line':
- case 'silent':
- if (isset($get_settings["button${it}_line"])) {
- $btn_n = (string) $get_settings["button${it}_line"];
- if ($it > 0) {
- if ($btn_t == 'silent') {
- $btn_n .= '!silent';
- $btn_t = 'line';
- }
- }
- } else {
- $btn_t = 'empty';
- $btn_n = '';
- }
- break;
- case 'empty':
- $btn_t = 'empty';
- break;
- }
- if (!empty($btn_t)) {
- $res[] = array('ref' => $ref_id, 'reftype' => $ref_type, 'instance' => (string) ($it + 1), 'buttontype' => $btn_t, 'name' => $btn_n, 'options' => $btn_opt);
- }
- }
- }
- return $res;
- }
+ break;
+ case 'line':
+ case 'silent':
+ if (isset($get_settings["button{$it}_line"])) {
+ $btn_n = (string) $get_settings["button{$it}_line"];
+ if ($it > 0) {
+ if ($btn_t == 'silent') {
+ $btn_n .= '!silent';
+ $btn_t = 'line';
+ }
+ }
+ } else {
+ $btn_t = 'empty';
+ $btn_n = '';
+ }
+ break;
+ case 'empty':
+ $btn_t = 'empty';
+ break;
+ }
+ if (!empty($btn_t)) {
+ $res[] = array('ref' => $ref_id, 'reftype' => $ref_type, 'instance' => (string) ($it + 1), 'buttontype' => $btn_t, 'name' => $btn_n, 'options' => $btn_opt);
+ }
+ }
+ }
+ return $res;
+ }
- function handleRoamingUsers($get_settings, $validateonly = false) {
- $hdr_prefix = 'sccp_ru_';
- $hdr_arprefix = 'sccp_ru-ar_';
+ function handleRoamingUsers($get_settings, $validateonly = false)
+ {
+ $hdr_prefix = 'sccp_ru_';
+ $hdr_arprefix = 'sccp_ru-ar_';
- $save_buttons = array();
- $save_settings = array();
- $name_dev = '';
- $db_field = $this->dbinterface->getSccpDeviceTableData("get_columns_sccpuser");
- $hw_prefix = 'SEP';
- $name_dev = $get_settings[$hdr_prefix . 'id'];
- $save_buttons = $this->getPhoneButtons($get_settings, $name_dev, 'sccpline');
+ $save_buttons = array();
+ $save_settings = array();
+ $name_dev = '';
+ $db_field = $this->dbinterface->getSccpDeviceTableData("get_columns_sccpuser");
+ $hw_prefix = 'SEP';
+ $name_dev = $get_settings[$hdr_prefix . 'id'];
+ $save_buttons = $this->getPhoneButtons($get_settings, $name_dev, 'sccpline');
- foreach ($db_field as $data) {
- $key = (string) $data['Field'];
- $value = "";
- switch ($key) {
- case 'name':
- $value = $name_dev;
- break;
- 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;
- 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;
- // Злобный ХАК ?!TODO!?
- if ($key == 'permit') {
- $save_settings['deny'] = 'NONE';
- }
- }
- break;
- case 'internal':
- if ($vval == 'on') {
- $tmp_data .= 'internal;';
- }
- break;
- default:
- $tmp_data .= $vval . '/';
- break;
- }
- }
- if (strlen($tmp_data) > 2) {
- while (substr($tmp_data, -1) == '/') {
- $tmp_data = substr($tmp_data, 0, -1);
- }
- $arr_data .= $tmp_data . ';';
- }
- }
- while (substr($arr_data, -1) == ';') {
- $arr_data = substr($arr_data, 0, -1);
- }
- if ($arr_clear) {
- $value = 'NONE';
- } else {
- $value = $arr_data;
- }
- }
- }
- if (!empty($value)) {
- $save_settings[$key] = $value;
- }
- }
- $this->dbinterface->write('sccpuser', $save_settings, 'replace', 'name');
- $this->dbinterface->write('sccpbuttons', $save_buttons, 'delete', '', $name_dev); //standardise to delete
- return array('status' => true, 'search' => '?display=sccp_phone', 'hash' => 'general');
- }
+ foreach ($db_field as $data) {
+ $key = (string) $data['Field'];
+ $value = "";
+ switch ($key) {
+ case 'name':
+ $value = $name_dev;
+ break;
+ 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;
+ 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;
+ // Злобный ХАК ?!TODO!?
+ if ($key == 'permit') {
+ $save_settings['deny'] = 'NONE';
+ }
+ }
+ break;
+ case 'internal':
+ if ($vval == 'on') {
+ $tmp_data .= 'internal;';
+ }
+ break;
+ default:
+ $tmp_data .= $vval . '/';
+ break;
+ }
+ }
+ if (strlen($tmp_data) > 2) {
+ while (substr($tmp_data, -1) == '/') {
+ $tmp_data = substr($tmp_data, 0, -1);
+ }
+ $arr_data .= $tmp_data . ';';
+ }
+ }
+ while (substr($arr_data, -1) == ';') {
+ $arr_data = substr($arr_data, 0, -1);
+ }
+ if ($arr_clear) {
+ $value = 'NONE';
+ } else {
+ $value = $arr_data;
+ }
+ }
+ }
+ if (!empty($value)) {
+ $save_settings[$key] = $value;
+ }
+ }
+ $this->dbinterface->write('sccpuser', $save_settings, 'replace', 'name');
+ $this->dbinterface->write('sccpbuttons', $save_buttons, 'delete', '', $name_dev); //standardise to delete
+ return array('status' => true, 'search' => '?display=sccp_phone', 'hash' => 'general');
+ }
- public function getCodecs($type, $showDefaults = false) {
- $allSupported = array();
- $sccpCodec = array_fill_keys(array('alaw', 'ulaw', 'g722', 'g723', 'g726', 'g729', 'gsm', 'h264', 'h263', 'h261'),0);
- // First see if have any site defaults
- $val = $this->sccpvalues['allow']['data'];
- if (empty($val)) {
- // No site defaults so return chan-sccp defaults
- $val = $this->sccpvalues['allow']['systemdefault'];
- }
- $siteCodecs = array_fill_keys(explode(';',$val), 1);
- switch ($type) {
- case 'audio':
- $fpbxCodecs = $this->FreePBX->Codecs->getAudio();
- break;
- case 'video':
- $fpbxCodecs = $this->FreePBX->Codecs->getVideo();
- break;
- case 'text':
- $siteCodecs = $this->getConfig('textcodecs');
- $fpbxCodecs = $this->FreePBX->Codecs->getText(true);
- break;
- case 'image':
- $siteCodecs = $this->getConfig('imagecodecs');
- $fpbxCodecs = $this->FreePBX->Codecs->getImage(true);
- break;
- }
- // Below could be squashed to 1 line, but would be unreadable.
- // These have value set to 1
- $enabledCodecs = array_intersect_key($siteCodecs, $sccpCodec, $fpbxCodecs);
- // These have value set to 0
- $allSupported = array_intersect_key($sccpCodec,$fpbxCodecs);
- $disabledCodecs = array_diff_key($allSupported,$enabledCodecs);
- $codecs = array_merge($enabledCodecs, $disabledCodecs);
+ public function getCodecs($type, $showDefaults = false)
+ {
+ $allSupported = array();
+ $sccpCodec = array_fill_keys(array('alaw', 'ulaw', 'g722', 'g723', 'g726', 'g729', 'gsm', 'h264', 'h263', 'h261'), 0);
+ // First see if have any site defaults
+ $val = $this->sccpvalues['allow']['data'];
+ if (empty($val)) {
+ // No site defaults so return chan-sccp defaults
+ $val = $this->sccpvalues['allow']['systemdefault'];
+ }
+ $siteCodecs = array_fill_keys(explode(';', $val), 1);
+ switch ($type) {
+ case 'audio':
+ $fpbxCodecs = $this->FreePBX->Codecs->getAudio();
+ break;
+ case 'video':
+ $fpbxCodecs = $this->FreePBX->Codecs->getVideo();
+ break;
+ case 'text':
+ $siteCodecs = $this->getConfig('textcodecs');
+ $fpbxCodecs = $this->FreePBX->Codecs->getText(true);
+ break;
+ case 'image':
+ $siteCodecs = $this->getConfig('imagecodecs');
+ $fpbxCodecs = $this->FreePBX->Codecs->getImage(true);
+ break;
+ }
+ // Below could be squashed to 1 line, but would be unreadable.
+ // These have value set to 1
+ $enabledCodecs = array_intersect_key($siteCodecs, $sccpCodec, $fpbxCodecs);
+ // These have value set to 0
+ $allSupported = array_intersect_key($sccpCodec, $fpbxCodecs);
+ $disabledCodecs = array_diff_key($allSupported, $enabledCodecs);
+ $codecs = array_merge($enabledCodecs, $disabledCodecs);
- return $codecs;
- }
+ return $codecs;
+ }
- /**
- * Retrieve Active Codecs
- * return finds Language pack
- */
+ /**
+ * Retrieve Active Codecs
+ * return finds Language pack
+ */
- private function findInstLangs() {
- //locales and country tones are installed in the tftp_lang_path
- //Available packs from provisioner are in masterFilesStructure.xml in tftpRoot Path
+ private function findInstLangs()
+ {
+ //locales and country tones are installed in the tftp_lang_path
+ //Available packs from provisioner are in masterFilesStructure.xml in tftpRoot Path
- $searchDir = '/'; //set default for when called by installer on virgin system
- $result = array();
+ $searchDir = '/'; //set default for when called by installer on virgin system
+ $result = array();
- if (!file_exists("{$this->sccppath['tftp_path']}/masterFilesStructure.xml")) {
- if (!$this->getFileListFromProvisioner($this->sccpvalues['tftp_path']['data'])) {
- // File does not exist and cannot get from internet.
- return $result;
- };
- }
- $tftpBootXml = simplexml_load_file("{$this->sccppath['tftp_path']}/masterFilesStructure.xml");
+ if (!file_exists("{$this->sccppath['tftp_path']}/masterFilesStructure.xml")) {
+ if (!$this->getFileListFromProvisioner($this->sccpvalues['tftp_path']['data'])) {
+ // File does not exist and cannot get from internet.
+ return $result;
+ };
+ }
+ $tftpBootXml = simplexml_load_file("{$this->sccppath['tftp_path']}/masterFilesStructure.xml");
- foreach (array('languages', 'countries') as $pack) {
- switch ($pack) {
- case 'languages':
- if (!empty($this->sccppath['tftp_lang_path'])) {
- $searchDir = $this->sccppath['tftp_lang_path'];
- }
- $simpleXmlArr = $tftpBootXml->xpath("//Directory[@name='languages']//DirectoryPath[contains(.,'languages/')]");
- array_shift($simpleXmlArr); // First element is the parent directory
- foreach ($simpleXmlArr as $rowIn) {
- $tmpArr = explode('/',(string)$rowIn);
- array_pop($tmpArr); //last element is empty
- $result[$pack]['available'][] = array_pop($tmpArr);
- }
- $fileToFind = 'be-sccp.jar'; // This file should exist if the locale is populated
- break;
- case 'countries':
- if (!empty($this->sccppath["tftp_countries_path"])) {
- $searchDir = $this->sccppath['tftp_countries_path'];
- }
- $simpleXmlArr = $tftpBootXml->xpath("//Directory[@name='countries']//DirectoryPath[contains(.,'countries/')]");
- array_shift($simpleXmlArr); // First element is the parent directory
- foreach ($simpleXmlArr as $rowIn) {
- $tmpArr = explode('/',(string)$rowIn);
- array_pop($tmpArr); //last element is empty
- $result[$pack]['available'][] = array_pop($tmpArr);
- }
- $fileToFind = 'g3-tones.xml'; // This file should exist if the locale is populated
- break;
- }
+ foreach (array('languages', 'countries') as $pack) {
+ switch ($pack) {
+ case 'languages':
+ if (!empty($this->sccppath['tftp_lang_path'])) {
+ $searchDir = $this->sccppath['tftp_lang_path'];
+ }
+ $simpleXmlArr = $tftpBootXml->xpath("//Directory[@name='languages']//DirectoryPath[contains(.,'languages/')]");
+ array_shift($simpleXmlArr); // First element is the parent directory
+ foreach ($simpleXmlArr as $rowIn) {
+ $tmpArr = explode('/', (string)$rowIn);
+ array_pop($tmpArr); //last element is empty
+ $result[$pack]['available'][] = array_pop($tmpArr);
+ }
+ $fileToFind = 'be-sccp.jar'; // This file should exist if the locale is populated
+ break;
+ case 'countries':
+ if (!empty($this->sccppath["tftp_countries_path"])) {
+ $searchDir = $this->sccppath['tftp_countries_path'];
+ }
+ $simpleXmlArr = $tftpBootXml->xpath("//Directory[@name='countries']//DirectoryPath[contains(.,'countries/')]");
+ array_shift($simpleXmlArr); // First element is the parent directory
+ foreach ($simpleXmlArr as $rowIn) {
+ $tmpArr = explode('/', (string)$rowIn);
+ array_pop($tmpArr); //last element is empty
+ $result[$pack]['available'][] = array_pop($tmpArr);
+ }
+ $fileToFind = 'g3-tones.xml'; // This file should exist if the locale is populated
+ break;
+ }
- foreach (array_diff(scandir($searchDir),array('.', '..')) as $subDir) {
- if (is_dir($searchDir . DIRECTORY_SEPARATOR . $subDir)) {
- $filename = $searchDir . DIRECTORY_SEPARATOR . $subDir . DIRECTORY_SEPARATOR . $fileToFind;
- if (file_exists($filename)) {
- $result[$pack]['have'][] = $subDir;
- }
- }
- }
- }
- $this->installedLangs = $result;
- return $result;
- }
+ foreach (array_diff(scandir($searchDir), array('.', '..')) as $subDir) {
+ if (is_dir($searchDir . DIRECTORY_SEPARATOR . $subDir)) {
+ $filename = $searchDir . DIRECTORY_SEPARATOR . $subDir . DIRECTORY_SEPARATOR . $fileToFind;
+ if (file_exists($filename)) {
+ $result[$pack]['have'][] = $subDir;
+ }
+ }
+ }
+ }
+ $this->installedLangs = $result;
+ return $result;
+ }
- /*
+ /*
* Check tftp/xml file path and permissions
*/
- private function initializeTFtpLanguagePath() {
- //$dir = $this->sccppath["tftp_lang_path"];
- foreach ($this->extconfigs->getExtConfig('sccp_lang') as $langKey => $langValueArr) {
- $localeDir = $this->sccppath["tftp_lang_path"] . DIRECTORY_SEPARATOR . $langValueArr['locale'];
- if (!is_dir($localeDir)) {
- if (!mkdir($localeDir, 0755, true)) {
- die("Error creating $localeDir directory");
- }
- }
- }
- }
+ private function initializeTFtpLanguagePath()
+ {
+ //$dir = $this->sccppath["tftp_lang_path"];
+ foreach ($this->extconfigs->getExtConfig('sccp_lang') as $langKey => $langValueArr) {
+ $localeDir = $this->sccppath["tftp_lang_path"] . DIRECTORY_SEPARATOR . $langValueArr['locale'];
+ if (!is_dir($localeDir)) {
+ if (!mkdir($localeDir, 0755, true)) {
+ die("Error creating $localeDir directory");
+ }
+ }
+ }
+ }
- /*
+ /*
* Check file paths and permissions
*/
- function initializeSccpPath() {
- $this->sccppath = array(
- 'asterisk' => $this->sccpvalues['asterisk_etc_path']['data'],
- 'tftp_path' => $this->sccpvalues['tftp_path']['data'],
- 'tftp_templates_path' => $this->sccpvalues['tftp_templates_path']['data'],
- 'tftp_store_path' => $this->sccpvalues['tftp_store_path']['data'],
- 'tftp_lang_path' => $this->sccpvalues['tftp_lang_path']['data'],
- 'tftp_firmware_path' => $this->sccpvalues['tftp_firmware_path']['data'],
- 'tftp_dialplan_path' => $this->sccpvalues['tftp_dialplan_path']['data'],
- 'tftp_softkey_path' => $this->sccpvalues['tftp_softkey_path']['data'],
- 'tftp_countries_path' => $this->sccpvalues['tftp_countries_path']['data']
- );
+ function initializeSccpPath()
+ {
+ $this->sccppath = array(
+ 'asterisk' => $this->sccpvalues['asterisk_etc_path']['data'],
+ 'tftp_path' => $this->sccpvalues['tftp_path']['data'],
+ 'tftp_templates_path' => $this->sccpvalues['tftp_templates_path']['data'],
+ 'tftp_store_path' => $this->sccpvalues['tftp_store_path']['data'],
+ 'tftp_lang_path' => $this->sccpvalues['tftp_lang_path']['data'],
+ 'tftp_firmware_path' => $this->sccpvalues['tftp_firmware_path']['data'],
+ 'tftp_dialplan_path' => $this->sccpvalues['tftp_dialplan_path']['data'],
+ 'tftp_softkey_path' => $this->sccpvalues['tftp_softkey_path']['data'],
+ 'tftp_countries_path' => $this->sccpvalues['tftp_countries_path']['data']
+ );
- // initialise $sccp_conf_init
- $this->sccp_conf_init = $this->initialiseConfInit();
+ // initialise $sccp_conf_init
+ $this->sccp_conf_init = $this->initialiseConfInit();
- $hint = $this->aminterface->core_list_hints();
- foreach ($hint as $key => $value) {
- if ($this->hint_context['default'] != $value) {
- $this->hint_context[$key] = $value;
- }
- }
- }
+ $hint = $this->aminterface->core_list_hints();
+ foreach ($hint as $key => $value) {
+ if ($this->hint_context['default'] != $value) {
+ $this->hint_context[$key] = $value;
+ }
+ }
+ }
- /*
+ /*
* Soft Key
*/
- function createSccpXmlSoftkey() {
- foreach ($this->aminterface->sccp_list_keysets() as $keyl => $vall) {
- $this->xmlinterface->create_xmlSoftkeyset($this->sccp_conf_init, $this->sccppath, $keyl);
- }
- }
+ function createSccpXmlSoftkey()
+ {
+ foreach ($this->aminterface->sccp_list_keysets() as $keyl => $vall) {
+ $this->xmlinterface->create_xmlSoftkeyset($this->sccp_conf_init, $this->sccppath, $keyl);
+ }
+ }
- /*
+ /*
* DialPlan
*/
- function getDialPlanList() {
- $dir = $this->sccppath["tftp_dialplan_path"] . '/dial*.xml';
- $base_len = strlen($this->sccppath["tftp_dialplan_path"]) + 1;
- $res = glob($dir);
- foreach ($res as $key => $value) {
- $res[$key] = array('id' => substr($value, $base_len, -4), 'file' => substr($value, $base_len));
- }
- return $res;
- }
+ function getDialPlanList()
+ {
+ $dir = $this->sccppath["tftp_dialplan_path"] . '/dial*.xml';
+ $base_len = strlen($this->sccppath["tftp_dialplan_path"]) + 1;
+ $res = glob($dir);
+ foreach ($res as $key => $value) {
+ $res[$key] = array('id' => substr($value, $base_len, -4), 'file' => substr($value, $base_len));
+ }
+ return $res;
+ }
- function getDialPlan($get_file) {
- $file = $this->sccppath["tftp_dialplan_path"] . '/' . $get_file . '.xml';
- if (file_exists($file)) {
+ function getDialPlan($get_file)
+ {
+ $file = $this->sccppath["tftp_dialplan_path"] . '/' . $get_file . '.xml';
+ if (file_exists($file)) {
- $fileContents = file_get_contents($file);
- $fileContents = str_replace(array("\n", "\r", "\t"), '', $fileContents);
- $fileContents = trim(str_replace('"', "'", $fileContents));
- $fileContents = strtolower($fileContents);
- $res = (array) simplexml_load_string($fileContents);
- }
- return $res;
- }
+ $fileContents = file_get_contents($file);
+ $fileContents = str_replace(array("\n", "\r", "\t"), '', $fileContents);
+ $fileContents = trim(str_replace('"', "'", $fileContents));
+ $fileContents = strtolower($fileContents);
+ $res = (array) simplexml_load_string($fileContents);
+ }
+ return $res;
+ }
- function deleteDialPlan($get_file) {
- $file = $this->sccppath["tftp_dialplan_path"] . '/' . $get_file . '.xml';
- if (file_exists($file)) {
- $res = unlink($file);
- }
- return $res;
- }
+ function deleteDialPlan($get_file)
+ {
+ $file = $this->sccppath["tftp_dialplan_path"] . '/' . $get_file . '.xml';
+ if (file_exists($file)) {
+ $res = unlink($file);
+ }
+ return $res;
+ }
- function saveDialPlan($get_settings) {
+ function saveDialPlan($get_settings)
+ {
- $confDir = $this->sccppath["tftp_dialplan_path"];
- return $this->xmlinterface->saveDialPlan($confDir, $get_settings);
- }
+ $confDir = $this->sccppath["tftp_dialplan_path"];
+ return $this->xmlinterface->saveDialPlan($confDir, $get_settings);
+ }
- /*
+ /*
* Update buttons Labels on mysql DB
*/
- private function updateSccpButtons($hw_list = array()) {
+ private function updateSccpButtons($hw_list = array())
+ {
- $save_buttons = array();
- $button_list = array();
- if (!empty($hw_list)) {
- foreach ($hw_list as $value) {
- $button_tmp = (array)$this->dbinterface->getSccpDeviceTableData("get_sccpdevice_buttons", array('buttontype' => 'speeddial', 'id' => $value['name']));
- $button_list = array_merge($button_list, $button_tmp);
- }
- } else {
- $button_list = $this->dbinterface->getSccpDeviceTableData("get_sccpdevice_buttons", array('buttontype' => 'speeddial'));
- }
- if (empty($button_list)) {
- return array('Response' => ' 0 buttons found ', 'data' => '');
- }
- $copy_fld = array('ref', 'reftype', 'instance', 'buttontype', 'options');
- $extList = $extList = $this->dbinterface->get_db_SccpTableByID("SccpExtension", array(), 'name');
- foreach ($button_list as $value) {
- $btn_opt = explode(',', $value['options']);
- $btn_id = $btn_opt[0];
- if (!empty($extList[$btn_id])) {
- if ($extList[$btn_id]['label'] != $value['name']) {
- $btn_data['name'] = $extList[$btn_id]['label'];
- foreach ($copy_fld as $ckey) {
- $btn_data[$ckey] = $value[$ckey];
- }
- $save_buttons[] = $btn_data;
- }
- }
- }
- if (empty($save_buttons)) {
- return array('Response' => 'No update required', 'data' => ' 0 - records ');
- }
- $res = $this->dbinterface->write('sccpbuttons', $save_buttons, 'replace', '', '');
- return array('Response' => 'Update records :' . count($save_buttons), 'data' => $res);
- }
+ $save_buttons = array();
+ $button_list = array();
+ if (!empty($hw_list)) {
+ foreach ($hw_list as $value) {
+ $button_tmp = (array)$this->dbinterface->getSccpDeviceTableData("get_sccpdevice_buttons", array('buttontype' => 'speeddial', 'id' => $value['name']));
+ $button_list = array_merge($button_list, $button_tmp);
+ }
+ } else {
+ $button_list = $this->dbinterface->getSccpDeviceTableData("get_sccpdevice_buttons", array('buttontype' => 'speeddial'));
+ }
+ if (empty($button_list)) {
+ return array('Response' => ' 0 buttons found ', 'data' => '');
+ }
+ $copy_fld = array('ref', 'reftype', 'instance', 'buttontype', 'options');
+ $extList = $extList = $this->dbinterface->get_db_SccpTableByID("SccpExtension", array(), 'name');
+ foreach ($button_list as $value) {
+ $btn_opt = explode(',', $value['options']);
+ $btn_id = $btn_opt[0];
+ if (!empty($extList[$btn_id])) {
+ if ($extList[$btn_id]['label'] != $value['name']) {
+ $btn_data['name'] = $extList[$btn_id]['label'];
+ foreach ($copy_fld as $ckey) {
+ $btn_data[$ckey] = $value[$ckey];
+ }
+ $save_buttons[] = $btn_data;
+ }
+ }
+ }
+ if (empty($save_buttons)) {
+ return array('Response' => 'No update required', 'data' => ' 0 - records ');
+ }
+ $res = $this->dbinterface->write('sccpbuttons', $save_buttons, 'replace', '', '');
+ return array('Response' => 'Update records :' . count($save_buttons), 'data' => $res);
+ }
- /*
+ /*
* Save Config Value to mysql DB
*/
-/*
+ /*
private function saveSccpSettings($save_value = array()) {
if (empty($save_value)) {
@@ -832,274 +856,285 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
return true;
}
*/
- /*
+ /*
* Create XMLDefault.cnf.xml
*/
- function createDefaultSccpXml() {
- $data_value = array();
- foreach ($this->sccpvalues as $key => $value) {
- $data_value[$key] = $value['data'];
- }
- $data_value['server_if_list'] = $this->getIpInformation('ip4');
- $model_information = $this->getSccpModelInformation($get = "enabled", $validate = false); // Get Active
+ function createDefaultSccpXml()
+ {
+ $data_value = array();
+ foreach ($this->sccpvalues as $key => $value) {
+ $data_value[$key] = $value['data'];
+ }
+ $data_value['server_if_list'] = $this->getIpInformation('ip4');
+ $model_information = $this->getSccpModelInformation($get = "enabled", $validate = false); // Get Active
- if (empty($model_information)) {
- $model_information = $this->getSccpModelInformation($get = "all", $validate = false); // Get All
- }
+ if (empty($model_information)) {
+ $model_information = $this->getSccpModelInformation($get = "all", $validate = false); // Get All
+ }
- $lang_data = $this->extconfigs->getExtConfig('sccp_lang');
- $data_value['tftp_path'] = $this->sccppath["tftp_path"];
+ $lang_data = $this->extconfigs->getExtConfig('sccp_lang');
+ $data_value['tftp_path'] = $this->sccppath["tftp_path"];
- $this->xmlinterface->create_default_XML($this->sccppath["tftp_store_path"], $data_value, $model_information, $lang_data);
- }
+ $this->xmlinterface->create_default_XML($this->sccppath["tftp_store_path"], $data_value, $model_information, $lang_data);
+ }
- /*
+ /*
* Create (SEP) dev_ID.cnf.xml
*/
- function createSccpDeviceXML(string $dev_id) {
+ function createSccpDeviceXML(string $dev_id)
+ {
- $sccp_native = true;
- $data_value = array();
- $dev_line_data = null;
+ $sccp_native = true;
+ $data_value = array();
+ $dev_line_data = null;
- $dev_config = $this->dbinterface->getSccpDeviceTableData("get_sccpdevice_byid", array('id' => $dev_id));
- // Support Cisco Sip Device
- if (!empty($dev_config['type'])) {
- if (strpos($dev_config['type'], 'sip') !== false) {
- $sccp_native = false;
- $tmp_bind = $this->getSipConfig();
- $dev_ext_config = $this->dbinterface->getSccpDeviceTableData("SccpDevice", array('name' => $dev_id, 'fields' => 'sip_ext'));
- if (empty($dev_ext_config)){
- // TODO: Placeholder. Have no associated sip line so cannot generate SEP Xml for SIP.
- // Need to return and inform user
- return false;
- }
- $data_value = array_merge($data_value, $dev_ext_config);
- $data_tmp = explode(';', $dev_ext_config['sip_lines']);
- $data_value['sbind'] = array();
- foreach ($data_tmp as $value) {
- $tmp_line = explode(',', $value);
- switch ($tmp_line[0]) {
- case 'line':
- $dev_line_data = $this->dbinterface->getSipTableData('DeviceById', $tmp_line[1]);
- $f_linetype = ($dev_line_data['sipdriver'] == 'chan_sip') ? 'sip' : 'pjsip';
- $dev_line_data['sbind'] = $tmp_bind[$f_linetype];
- if ((!$this->array_key_exists_recursive('udp', $tmp_bind[$f_linetype])) && (!$this->array_key_exists_recursive('tcp', $tmp_bind[$f_linetype]))) {
- die_freepbx(_("SIP server configuration error ! Neither UDP nor TCP protocol enabled"));
- return false;
- }
- if (!empty($dev_line_data)) {
- $data_value['siplines'][] = $dev_line_data;
- }
- if ($tmp_line[2] == 'default') {
- $data_value['sbind'] = $tmp_bind[$f_linetype];
- }
- break;
- case 'speeddial':
- $data_value['speeddial'][] = array("name" => $tmp_line[1], "dial" => $tmp_line[2]);
- break;
- default:
- $data_value['sipfunctions'][] = $tmp_line;
- break;
- }
- }
- }
- }
- foreach ($this->sccpvalues as $key => $value) {
- $data_value[$key] = $value['data'];
- }
- //Get Cisco Code only Old Device
- $data_value['ntp_timezone_id'] = $this->extconfigs->getExtConfig('sccp_timezone', $data_value['ntp_timezone']); // Old Cisco Device
- // $data_value['ntp_timezone_id'] = $data_value['ntp_timezone']; // New Cisco Device !
- // $data_value['ntp_timezone_id'] = // SPA Cisco Device !
- $data_value['server_if_list'] = $this->getIpInformation('ip4');
- $dev_config = array_merge($dev_config, $this->sccppath);
- $dev_config['tftp_firmware'] = '';
- $dev_config['addon_info'] = array();
- if ($dev_config['addon'] !== 'NONE') {
- $hw_addon = explode(',', $dev_config['addon']);
- foreach ($hw_addon as $key) {
- $hw_data = $this->getSccpModelInformation('byid', false, "all", array('model' => $key));
- $dev_config['addon_info'][$key] = $hw_data[$key]['loadimage'];
- }
- }
- if (!$sccp_native) {
- return $this->xmlinterface->create_SEP_SIP_XML($this->sccppath["tftp_store_path"], $data_value, $dev_config, $dev_id);
- }
- return $this->xmlinterface->create_SEP_XML($this->sccppath["tftp_templates_path"], $data_value, $dev_config, $dev_id);
- }
+ $dev_config = $this->dbinterface->getSccpDeviceTableData("get_sccpdevice_byid", array('id' => $dev_id));
+ // Support Cisco Sip Device
+ if (!empty($dev_config['type'])) {
+ if (strpos($dev_config['type'], 'sip') !== false) {
+ $sccp_native = false;
+ $tmp_bind = $this->getSipConfig();
+ $dev_ext_config = $this->dbinterface->getSccpDeviceTableData("SccpDevice", array('name' => $dev_id, 'fields' => 'sip_ext'));
+ if (empty($dev_ext_config)) {
+ // TODO: Placeholder. Have no associated sip line so cannot generate SEP Xml for SIP.
+ // Need to return and inform user
+ return false;
+ }
+ $data_value = array_merge($data_value, $dev_ext_config);
+ $data_tmp = explode(';', $dev_ext_config['sip_lines']);
+ $data_value['sbind'] = array();
+ foreach ($data_tmp as $value) {
+ $tmp_line = explode(',', $value);
+ switch ($tmp_line[0]) {
+ case 'line':
+ $dev_line_data = $this->dbinterface->getSipTableData('DeviceById', $tmp_line[1]);
+ $f_linetype = ($dev_line_data['sipdriver'] == 'chan_sip') ? 'sip' : 'pjsip';
+ $dev_line_data['sbind'] = $tmp_bind[$f_linetype];
+ if ((!$this->array_key_exists_recursive('udp', $tmp_bind[$f_linetype])) && (!$this->array_key_exists_recursive('tcp', $tmp_bind[$f_linetype]))) {
+ die_freepbx(_("SIP server configuration error ! Neither UDP nor TCP protocol enabled"));
+ return false;
+ }
+ if (!empty($dev_line_data)) {
+ $data_value['siplines'][] = $dev_line_data;
+ }
+ if ($tmp_line[2] == 'default') {
+ $data_value['sbind'] = $tmp_bind[$f_linetype];
+ }
+ break;
+ case 'speeddial':
+ $data_value['speeddial'][] = array("name" => $tmp_line[1], "dial" => $tmp_line[2]);
+ break;
+ default:
+ $data_value['sipfunctions'][] = $tmp_line;
+ break;
+ }
+ }
+ }
+ }
+ foreach ($this->sccpvalues as $key => $value) {
+ $data_value[$key] = $value['data'];
+ }
+ //Get Cisco Code only Old Device
+ $data_value['ntp_timezone_id'] = $this->extconfigs->getExtConfig('sccp_timezone', $data_value['ntp_timezone']); // Old Cisco Device
+ // $data_value['ntp_timezone_id'] = $data_value['ntp_timezone']; // New Cisco Device !
+ // $data_value['ntp_timezone_id'] = // SPA Cisco Device !
+ $data_value['server_if_list'] = $this->getIpInformation('ip4');
+ $dev_config = array_merge($dev_config, $this->sccppath);
+ $dev_config['tftp_firmware'] = '';
+ $dev_config['addon_info'] = array();
+ if ($dev_config['addon'] !== 'NONE') {
+ $hw_addon = explode(',', $dev_config['addon']);
+ foreach ($hw_addon as $key) {
+ $hw_data = $this->getSccpModelInformation('byid', false, "all", array('model' => $key));
+ $dev_config['addon_info'][$key] = $hw_data[$key]['loadimage'];
+ }
+ }
+ if (!$sccp_native) {
+ return $this->xmlinterface->create_SEP_SIP_XML($this->sccppath["tftp_store_path"], $data_value, $dev_config, $dev_id);
+ }
+ return $this->xmlinterface->create_SEP_XML($this->sccppath["tftp_templates_path"], $data_value, $dev_config, $dev_id);
+ }
- function deleteSccpDeviceXML($dev_id = '') {
- if (empty($dev_id)) {
- return false;
- }
- if ($dev_id == 'all') {
- $xml_name = $this->sccppath["tftp_store_path"] . '/SEP*.cnf.xml';
- array_map("unlink", glob($xml_name));
- $xml_name = $this->sccppath["tftp_store_path"] . '/ATA*.cnf.xml';
- array_map("unlink", glob($xml_name));
- $xml_name = $this->sccppath["tftp_store_path"] . '/VG*.cnf.xml';
- array_map("unlink", glob($xml_name));
- } else {
- if (!strpos($dev_id, 'SEP')) {
- return false;
- }
- $xml_name = $this->sccppath["tftp_store_path"] . '/' . $dev_id . '.cnf.xml';
- if (file_exists($xml_name)) {
- unlink($xml_name);
- }
- }
- }
+ function deleteSccpDeviceXML($dev_id = '')
+ {
+ if (empty($dev_id)) {
+ return false;
+ }
+ if ($dev_id == 'all') {
+ $xml_name = $this->sccppath["tftp_store_path"] . '/SEP*.cnf.xml';
+ array_map("unlink", glob($xml_name));
+ $xml_name = $this->sccppath["tftp_store_path"] . '/ATA*.cnf.xml';
+ array_map("unlink", glob($xml_name));
+ $xml_name = $this->sccppath["tftp_store_path"] . '/VG*.cnf.xml';
+ array_map("unlink", glob($xml_name));
+ } else {
+ if (!strpos($dev_id, 'SEP')) {
+ return false;
+ }
+ $xml_name = $this->sccppath["tftp_store_path"] . '/' . $dev_id . '.cnf.xml';
+ if (file_exists($xml_name)) {
+ unlink($xml_name);
+ }
+ }
+ }
- private function createSccpBackup() {
- global $amp_conf;
- $dir_info = array();
- $backup_files = array($amp_conf['ASTETCDIR'] . '/sccp', $amp_conf['ASTETCDIR'] . '/extensions', $amp_conf['ASTETCDIR'] . '/extconfig',
- $amp_conf['ASTETCDIR'] . '/res_config_mysql', $amp_conf['ASTETCDIR'] . '/res_mysql');
- $backup_ext = array('.conf', '_additional.conf', '_custom.conf');
- $backup_info = $this->sccppath["tftp_path"] . '/sccp_dir.info';
+ private function createSccpBackup()
+ {
+ global $amp_conf;
+ $dir_info = array();
+ $backup_files = array(
+ $amp_conf['ASTETCDIR'] . '/sccp',
+ $amp_conf['ASTETCDIR'] . '/extensions',
+ $amp_conf['ASTETCDIR'] . '/extconfig',
+ $amp_conf['ASTETCDIR'] . '/res_config_mysql',
+ $amp_conf['ASTETCDIR'] . '/res_mysql'
+ );
+ $backup_ext = array('.conf', '_additional.conf', '_custom.conf');
+ $backup_info = $this->sccppath["tftp_path"] . '/sccp_dir.info';
- $result = $this->dbinterface->dump_sccp_tables($this->sccppath["tftp_path"], $amp_conf['AMPDBNAME'], $amp_conf['AMPDBUSER'], $amp_conf['AMPDBPASS']);
- $dir_info['asterisk'] = $this->findAllFiles($amp_conf['ASTETCDIR']);
- $dir_info['tftpdir'] = $this->findAllFiles($this->sccppath["tftp_path"]);
- $dir_info['driver'] = $this->FreePBX->Core->getAllDriversInfo();
- $dir_info['core'] = $this->aminterface->getSCCPVersion();
- $dir_info['realtime'] = $this->aminterface->getRealTimeStatus();
- $dir_info['extconfigs'] = $this->extconfigs->info();
- $dir_info['dbinterface'] = $this->dbinterface->info();
- $dir_info['XML'] = $this->xmlinterface->info();
+ $result = $this->dbinterface->dump_sccp_tables($this->sccppath["tftp_path"], $amp_conf['AMPDBNAME'], $amp_conf['AMPDBUSER'], $amp_conf['AMPDBPASS']);
+ $dir_info['asterisk'] = $this->findAllFiles($amp_conf['ASTETCDIR']);
+ $dir_info['tftpdir'] = $this->findAllFiles($this->sccppath["tftp_path"]);
+ $dir_info['driver'] = $this->FreePBX->Core->getAllDriversInfo();
+ $dir_info['core'] = $this->aminterface->getSCCPVersion();
+ $dir_info['realtime'] = $this->aminterface->getRealTimeStatus();
+ $dir_info['extconfigs'] = $this->extconfigs->info();
+ $dir_info['dbinterface'] = $this->dbinterface->info();
+ $dir_info['XML'] = $this->xmlinterface->info();
- $fh = fopen($backup_info, 'w');
- $dir_str = "Begin JSON data ------------\r\n";
- fwrite($fh, $dir_str);
- fwrite($fh, json_encode($dir_info));
- $dir_str = "\r\n\r\nBegin TEXT data ------------\r\n";
- foreach ($dir_info['asterisk'] as $data) {
- $dir_str .= $data . "\r\n";
- }
- foreach ($dir_info['tftpdir'] as $data) {
- $dir_str .= $data . "\r\n";
- }
- fputs($fh, $dir_str);
- fclose($fh);
+ $fh = fopen($backup_info, 'w');
+ $dir_str = "Begin JSON data ------------\r\n";
+ fwrite($fh, $dir_str);
+ fwrite($fh, json_encode($dir_info));
+ $dir_str = "\r\n\r\nBegin TEXT data ------------\r\n";
+ foreach ($dir_info['asterisk'] as $data) {
+ $dir_str .= $data . "\r\n";
+ }
+ foreach ($dir_info['tftpdir'] as $data) {
+ $dir_str .= $data . "\r\n";
+ }
+ fputs($fh, $dir_str);
+ fclose($fh);
- $zip = new \ZipArchive();
- $filename = $result . "." . gethostname() . ".zip";
- if ($zip->open($filename, \ZIPARCHIVE::CREATE)) {
- $zip->addFile($result);
- $zip->addFile($backup_info);
- foreach ($backup_files as $file) {
- foreach ($backup_ext as $b_ext) {
- if (file_exists($file . $b_ext)) {
- $zip->addFile($file . $b_ext);
- }
- }
- }
- $zip->close();
- }
- unlink($backup_info);
- unlink($result);
- return $filename;
- }
- function getSccpModelInformation($get = "all", $validate = false, $format_list = "all", $filter = array()) {
- $modelList = $this->dbinterface->getModelInfoFromDb($get, $format_list, $filter);
+ $zip = new \ZipArchive();
+ $filename = $result . "." . gethostname() . ".zip";
+ if ($zip->open($filename, \ZIPARCHIVE::CREATE)) {
+ $zip->addFile($result);
+ $zip->addFile($backup_info);
+ foreach ($backup_files as $file) {
+ foreach ($backup_ext as $b_ext) {
+ if (file_exists($file . $b_ext)) {
+ $zip->addFile($file . $b_ext);
+ }
+ }
+ }
+ $zip->close();
+ }
+ unlink($backup_info);
+ unlink($result);
+ return $filename;
+ }
+ function getSccpModelInformation($get = "all", $validate = false, $format_list = "all", $filter = array())
+ {
+ $modelList = $this->dbinterface->getModelInfoFromDb($get, $format_list, $filter);
- if (!$validate) {
- return $modelList;
- }
- // Here so want to see if FW and template files exist on TFTP server.
- // only look in relevant column indexed by model so that returned value is ne 0
- // will be boolean false if not found
+ if (!$validate) {
+ return $modelList;
+ }
+ // Here so want to see if FW and template files exist on TFTP server.
+ // only look in relevant column indexed by model so that returned value is ne 0
+ // will be boolean false if not found
- $needToCheckFw = array_search('no', array_column($modelList, 'fwfound', 'model'), true);
- $needToCheckTemp = array_search('no', array_column($modelList, 'templatefound', 'model'), true);
+ $needToCheckFw = array_search('no', array_column($modelList, 'fwfound', 'model'), true);
+ $needToCheckTemp = array_search('no', array_column($modelList, 'templatefound', 'model'), true);
- if ($needToCheckFw === false && $needToCheckTemp === false) {
- // in modellist, all firmware shows as being available (no not found for either)
- return $modelList;
- }
- $file_ext = array('.loads', '.sbn', '.bin', '.zup', '.sbin', '.SBN', '.LOADS');
- $dir = $this->sccpvalues['tftp_firmware_path']['data'];
- $search_mode = $this->sccpvalues['tftp_rewrite']['data'];
+ if ($needToCheckFw === false && $needToCheckTemp === false) {
+ // in modellist, all firmware shows as being available (no not found for either)
+ return $modelList;
+ }
+ $file_ext = array('.loads', '.sbn', '.bin', '.zup', '.sbin', '.SBN', '.LOADS');
+ $dir = $this->sccpvalues['tftp_firmware_path']['data'];
+ $search_mode = $this->sccpvalues['tftp_rewrite']['data'];
- switch ($search_mode) {
- case 'pro':
- case 'on':
- case 'internal':
- $dir_list = $this->findAllFiles($dir, $file_ext, 'fileBaseName');
- break;
- case 'off':
- default: // Place in root TFTP dir
- $dir_list = $this->findAllFiles($dir, $file_ext, 'dirFileBaseName');
- break;
- }
- foreach ($modelList as &$raw_settings) {
- if ((!empty($raw_settings['loadimage'])) && ($raw_settings['fwfound'] === 'no')) {
- switch ($search_mode) {
- case 'pro':
- case 'on':
- case 'internal':
- if (in_array($raw_settings['loadimage'], $dir_list, true)) {
- $raw_settings['fwfound'] = 'yes';
- }
- break;
- case 'internal2':
- break;
- case 'off':
- default: // Place in root TFTP dir
- if (in_array("{$dir}/{$raw_settings['loadimage']}", $dir_list, true)) {
- $raw_settings['fwfound'] = 'yes';
- }
- break;
- }
- }
- if (!empty($raw_settings['nametemplate'])) {
- $file = $this->sccppath['tftp_templates_path'] . '/' . $raw_settings['nametemplate'];
- if (file_exists($file)) {
- $raw_settings['templatefound'] = 'yes';
- }
- }
- }
- unset($raw_settings); // passed as reference so must unset.
- // Now need to update database to avoid checks in future
- // // TODO: First pass - need to refine.
- foreach ($modelList as $key => $value) {
- $this->dbinterface->write('sccpdevmodel', $value, 'replace');
- }
- return $modelList;
- }
+ switch ($search_mode) {
+ case 'pro':
+ case 'on':
+ case 'internal':
+ $dir_list = $this->findAllFiles($dir, $file_ext, 'fileBaseName');
+ break;
+ case 'off':
+ default: // Place in root TFTP dir
+ $dir_list = $this->findAllFiles($dir, $file_ext, 'dirFileBaseName');
+ break;
+ }
+ foreach ($modelList as &$raw_settings) {
+ if ((!empty($raw_settings['loadimage'])) && ($raw_settings['fwfound'] === 'no')) {
+ switch ($search_mode) {
+ case 'pro':
+ case 'on':
+ case 'internal':
+ if (in_array($raw_settings['loadimage'], $dir_list, true)) {
+ $raw_settings['fwfound'] = 'yes';
+ }
+ break;
+ case 'internal2':
+ break;
+ case 'off':
+ default: // Place in root TFTP dir
+ if (in_array("{$dir}/{$raw_settings['loadimage']}", $dir_list, true)) {
+ $raw_settings['fwfound'] = 'yes';
+ }
+ break;
+ }
+ }
+ if (!empty($raw_settings['nametemplate'])) {
+ $file = $this->sccppath['tftp_templates_path'] . '/' . $raw_settings['nametemplate'];
+ if (file_exists($file)) {
+ $raw_settings['templatefound'] = 'yes';
+ }
+ }
+ }
+ unset($raw_settings); // passed as reference so must unset.
+ // Now need to update database to avoid checks in future
+ // // TODO: First pass - need to refine.
+ foreach ($modelList as $key => $value) {
+ $this->dbinterface->write('sccpdevmodel', $value, 'replace');
+ }
+ return $modelList;
+ }
- function getHintInformation($filter = array()) {
- $res = array();
- $default_hint = '@ext-local';
+ function getHintInformation($filter = array())
+ {
+ $res = array();
+ $default_hint = '@ext-local';
- //if (empty($res)) {
- // Old Req get all hints
- // Avoid post processing - return dat in required format.
- $res = $this->aminterface->core_list_all_hints();
- //foreach ($tmp_data as $value) {
- //$res[$value] = array('key' => $value, 'exten' => $this->before('@', $value), 'label' => $value);
- //}
- //dbug($res);
- //}
+ //if (empty($res)) {
+ // Old Req get all hints
+ // Avoid post processing - return dat in required format.
+ $res = $this->aminterface->core_list_all_hints();
+ //foreach ($tmp_data as $value) {
+ //$res[$value] = array('key' => $value, 'exten' => $this->before('@', $value), 'label' => $value);
+ //}
+ //dbug($res);
+ //}
- // Update info from sccp_db
- foreach ($this->dbinterface->getSccpDeviceTableData('sccpHints') as $key => $value) {
- if (!empty($res[$key . $default_hint])) {
- $res[$key . $default_hint]['exten'] = $key;
- $res[$key . $default_hint]['label'] = $value['label'];
- } else {
- // if not exist in system hints ..... ???????
- $res[$key . $default_hint] = array('key' => $key . $default_hint, 'exten' => $key, 'label' => $value['label']);
- }
- }
- // Hints returned from db are already sorted by name
- //if (!$sort) {
- return $res;
- //}
- /*
+ // Update info from sccp_db
+ foreach ($this->dbinterface->getSccpDeviceTableData('sccpHints') as $key => $value) {
+ if (!empty($res[$key . $default_hint])) {
+ $res[$key . $default_hint]['exten'] = $key;
+ $res[$key . $default_hint]['label'] = $value['label'];
+ } else {
+ // if not exist in system hints ..... ???????
+ $res[$key . $default_hint] = array('key' => $key . $default_hint, 'exten' => $key, 'label' => $value['label']);
+ }
+ }
+ // Hints returned from db are already sorted by name
+ //if (!$sort) {
+ return $res;
+ //}
+ /*
foreach ($res as $key => $value) {
$data_sort[$value['exten']] = $key;
}
@@ -1108,10 +1143,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
$res_sort[$value] = $res[$value];
}
*/
- // Update info from sip DB
- /* !TODO!: Update Hint info from sip DB ??? */
- //return $res_sort;
+ // Update info from sip DB
+ /* !TODO!: Update Hint info from sip DB ??? */
+ //return $res_sort;
- }
+ }
}
-?>