From 0f352eeb592e8746e736ba5fe6ed3b8f9081c337 Mon Sep 17 00:00:00 2001 From: steve-lad <72376554+steve-lad@users.noreply.github.com> Date: Sat, 7 Aug 2021 11:03:33 +0200 Subject: [PATCH] Fix addition of new device when not in db Partial fix for issue#29 Populate available fields Optimise code --- assets/js/sccp_manager.js | 3 +- module.xml | 2 +- sccpManClasses/dbinterface.class.php | 2 +- views/form.adddevice.php | 121 +++++++++++---------------- 4 files changed, 51 insertions(+), 77 deletions(-) diff --git a/assets/js/sccp_manager.js b/assets/js/sccp_manager.js index 5f3e9ed..f318418 100644 --- a/assets/js/sccp_manager.js +++ b/assets/js/sccp_manager.js @@ -7,7 +7,7 @@ $(document).ready(function () { }, }); $('#ajaxcancel').on('click', function (e) { -// console.log('Calncel'); + console.log('Cancel'); if ($(this).data('hash') != null) { location.hash = $(this).data('hash'); } @@ -24,7 +24,6 @@ $(document).ready(function () { location.reload(); } }); - // ajaxsubmit2 is "Save and continue" - saves form data and stays on form $('#ajaxsubmit2').on('click', function (e) { var vdata = ''; diff --git a/module.xml b/module.xml index b0aeb58..8e060ab 100644 --- a/module.xml +++ b/module.xml @@ -1,7 +1,7 @@ sccp_manager SCCP Manager - 14.3.0.4 + 14.3.0.5 setup SCCP Connectivity Steve Lad, Alex GP diff --git a/sccpManClasses/dbinterface.class.php b/sccpManClasses/dbinterface.class.php index 60b7a0b..f86b43b 100644 --- a/sccpManClasses/dbinterface.class.php +++ b/sccpManClasses/dbinterface.class.php @@ -115,7 +115,7 @@ class dbinterface } break; case 'get_columns_sccpdevice': - $stmts = $this->db->prepare('DESCRIBE sccpdevice'); + $stmtU = $this->db->prepare('DESCRIBE sccpdevice'); break; case 'get_columns_sccpuser': $stmts = $this->db->prepare('DESCRIBE sccpuser'); diff --git a/views/form.adddevice.php b/views/form.adddevice.php index 6626e6c..e05a403 100644 --- a/views/form.adddevice.php +++ b/views/form.adddevice.php @@ -6,10 +6,10 @@ */ $def_val = array(); $dev_id = null; -$dev_new = null; $device_warning= null; // Default value from Server setings - +//Get default values. Will use these for a new device, and modify for an existing. +$def_val = $this->getTableDefaults('sccpdevice'); $def_val['netlang'] = array("keyword" => 'netlang', "data" => $this->sccpvalues['netlang']['data'], "seq" => "99"); $def_val['devlang'] = array("keyword" => 'devlang', "data" => $this->sccpvalues['devlang']['data'], "seq" => "99"); $def_val['directed_pickup_context'] = array("keyword" => 'directed_pickup_context', "data" => $this->sccpvalues['directed_pickup_context']['data'], "seq" => "99"); @@ -17,66 +17,23 @@ $def_val['directed_pickup_context'] = array("keyword" => 'directed_pickup_conte if (!empty($_REQUEST['new_id'])) { // Adding device that is connected but not in database $dev_id = $_REQUEST['new_id']; - - // Get device defaults from db - $sccpDeviceDesc = $this->dbinterface->getSccpDeviceTableData('get_columns_sccpdevice'); - - foreach ($sccpDeviceDesc as $data) { - $key = (string) $data['Field']; - $def_val[$key] = array("keyword" => $key, "data" => $data['Default'], "seq" => "99"); - } - // Overwrite some specific defaults based on $_REQUEST - $val = str_replace(array('SEP','ATA','VG'), '', $dev_id); - $val = implode(':', sscanf($val, '%2s%2s%2s%2s%2s%2s')); // 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"); + $def_val['type'] = array("keyword" => 'type', "data" => $_REQUEST['type'], "seq" => "99"); if (!empty($_REQUEST['addon'])) { $def_val['addon'] = array("keyword" => 'type', "data" => $_REQUEST['addon'], "seq" => "99"); } } -//Get default values. Will use these for a new device, and modify for an existing. -$def_val = $this->getTableDefaults('sccpdevice'); if (!empty($_REQUEST['id'])) { // Editing an existing Device. Overwrite any defaults that are already set for this device. $dev_id = $_REQUEST['id']; - $dev_new = $dev_id; $db_res = $this->dbinterface->getSccpDeviceTableData('get_sccpdevice_byid', array("id" => $dev_id)); foreach ($db_res as $key => $val) { if (!empty($val)) { switch ($key) { - case 'type': - $tmp_raw = $this->getSccpModelInformation('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']); - if ($tmpar[0] != 'yes') { - $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']); - } - } - $def_val[$key] = array("keyword" => $key, "data" => $val, "seq" => "99"); - break; - case 'name': - $key = 'mac'; //This is the key that formShow expects - $val = str_replace(array('SEP','ATA','VG'), '', $val); - $val = implode(':', sscanf($val, '%2s%2s%2s%2s%2s%2s')); // Convert to Cisco display Format - $def_val[$key] = array("keyword" => $key, "data" => $val, "seq" => "99"); - break; -// case 'permit': -// case 'deny': -// $def_val[$key . '_net'] = array("keyword" => $key, "data" => before('/', $val), "seq" => "99"); -// $key = $key . '_mask'; -// $val = after('/', $val); -// break; case 'phonepersonalization': - $def_val['phonepersonalization'] = array("keyword" => 'phonepersonalization', "data" => $val, "seq" => "99"); + $def_val['phonepersonalization'] = array("keyword" => 'phonepersonalization', "data" => $val, "seq" => "99"); + break; default: // Overwrite existing defaults after checking that data is still valid after schema updates // Do not strip underscores as these fields are new in the schema and so should be valid. @@ -86,7 +43,7 @@ if (!empty($_REQUEST['id'])) { // Quote value as enum values are quoted. if (in_array("'{$val}'", $enumFields[$key])) { // The value is valid so will keep - $def_val[$key] = array("keyword" => $key, "data" => $val, "seq" => "99"); + $def_val[$key] = array('keyword' => $key, 'data' => $val, 'seq' => 99); } // Do not store value and let defaults apply continue; @@ -100,40 +57,58 @@ if (!empty($_REQUEST['id'])) { } } -if (!empty($device_warning)) { - ?> -
-
-
-

Warning in the SCCP Device

-
- $value) { - echo '

'.$key.'

'; - if (is_array($value)) { - echo '
  • '._(implode('
  • ', $value)).'
  • '; - } else { - echo '
  • '. _($value).'
  • '; - } - } - ?> - +if (!empty($def_val['type'])) { + $tmp_raw = $this->getSccpModelInformation('byid', true, 'all', array('model'=>$def_val['type'])); + if (!empty($tmp_raw[0])) { + $tmp_raw = $tmp_raw[0]; + } + if (!empty($tmp_raw['validate'])) { + $tmpar = explode(";", $tmp_raw['validate']); + if ($tmpar[0] != 'yes') { + $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']); + } + if (!empty($device_warning)) { + ?> +
    +
    +
    +

    Warning in the SCCP Device

    +
    +
    +                                 $value) {
    +                                    echo '

    '.$key.'

    '; + if (is_array($value)) { + echo '
  • '._(implode('
  • ', $value)).'
  • '; + } else { + echo '
  • '. _($value).'
  • '; + } + } + ?> +
    +
    +
    -
    -
    -
    - - +
    +
    '; } else { + $val = str_replace(array('SEP','ATA','VG'), '', $dev_id); + $val = implode(':', sscanf($val, '%2s%2s%2s%2s%2s%2s')); // Convert to Cisco display Format + $def_val['mac'] = array("keyword" => 'mac', "data" => $val, "seq" => "99"); echo ''; } if (empty($dev_id)) {