Do not try to write SEP file if no line defined. Save settings and warn user via toast Fix feedback to ajax by separately submitting data before return Fix freepbx overwriting data and causing fail, by separating json into two blocks and only parsing the first Fix return to tab on save (set location hash) when tabs changed in settings Fix return to calling page on save when device updated
129 lines
6.2 KiB
PHP
129 lines
6.2 KiB
PHP
<?php
|
|
/*
|
|
* To change this license header, choose License Headers in Project Properties.
|
|
* To change this template file, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
$def_val = array();
|
|
$dev_id = 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");
|
|
|
|
if (!empty($_REQUEST['new_id'])) {
|
|
// Adding device that is connected but not in database
|
|
$dev_id = $_REQUEST['new_id'];
|
|
// Overwrite some specific defaults based on $_REQUEST
|
|
$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");
|
|
}
|
|
}
|
|
|
|
if (!empty($_REQUEST['id'])) {
|
|
// Editing an existing Device. Overwrite any defaults that are already set for this device.
|
|
$dev_id = $_REQUEST['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 'phonepersonalization':
|
|
$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.
|
|
$enumFields = $this->getTableEnums('sccpdevice', false);
|
|
if (array_key_exists($key, $enumFields)){
|
|
// This field is (now) an enum. Check the current value is acceptable.
|
|
// 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);
|
|
}
|
|
// Do not store value and let defaults apply
|
|
break;
|
|
}
|
|
$def_val[$key] = array("keyword" => $key, "data" => $val, "seq" => "99");
|
|
// Need to assign defaultLine as not set in the db.
|
|
$def_val['defaultLine'] = $this->dbinterface->getSccpDeviceTableData('getDefaultLine', array('id' => $dev_id))['name'];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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)) {
|
|
?>
|
|
<div class="fpbx-container container-fluid">
|
|
<div class="row">
|
|
<div class="container">
|
|
<h2 style="border:2px solid Tomato;color:Tomato;" >Warning in the SCCP Device</h2>
|
|
<div class="table-responsive">
|
|
<pre>
|
|
<?php
|
|
foreach ($device_warning as $key => $value) {
|
|
echo '<h3>'.$key.'</h3>';
|
|
if (is_array($value)) {
|
|
echo '<li>'._(implode('</li><li>', $value)).'</li>';
|
|
} else {
|
|
echo '<li>'. _($value).'</li>';
|
|
}
|
|
}
|
|
?>
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<?php }
|
|
}
|
|
} ?>
|
|
|
|
<form autocomplete="off" name="frm_adddevice" id="frm_adddevice" class="fpbx-submit" action="" method="post" data-id="hw_edit">
|
|
<input type="hidden" name="category" value="adddevice_form">
|
|
<input type="hidden" name="Submit" value="Submit">
|
|
<input type="hidden" name="sccp_device_typeid" value="sccpdevice">
|
|
|
|
<?php
|
|
if (empty($dev_id)) {
|
|
echo '<input type="hidden" name="sccp_deviceid" value="new">';
|
|
} 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 '<input type="hidden" name="sccp_deviceid" value="'.$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);
|
|
}
|
|
echo $this->showGroup('sccp_hw_dev2', 1, 'sccp_hw', $def_val);
|
|
echo $this->showGroup('sccp_hw_dev_advance', 1, 'sccp_hw', $def_val);
|
|
echo $this->showGroup('sccp_hw_dev_softkey', 1, 'sccp_hw', $def_val);
|
|
// echo $this->showGroup('sccp_hw_dev_pickup', 1, 'sccp_hw', $def_val); This are line properties and does not exist!
|
|
echo $this->showGroup('sccp_hw_dev_conference', 1, 'sccp_hw', $def_val);
|
|
echo $this->showGroup('sccp_dev_vendor_conf', 1, 'vendorconfig', $def_val);
|
|
echo $this->showGroup('sccp_hw_dev_network', 1, 'sccp_hw', $def_val);
|
|
?>
|
|
</form>
|