rewrite codec methods to be more compliant with chan-sccp

Update db Fields for defaults
Update save logic
WIP update save defaults Field  in sccpline
This commit is contained in:
steve-lad 2021-07-05 17:08:01 +02:00
parent b15729a340
commit a6a9850a3c
3 changed files with 49 additions and 19 deletions

View file

@ -728,7 +728,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
public function getMyConfig($var = null, $id = "noid") {
switch ($var) {
case "voicecodecs":
$val = explode(";", $this->sccpvalues['allow']['data']);
$val = explode(",", explode("|", $this->sccpvalues['disallow|allow']['data'])[1]);
$final = array();
$i = 1;
foreach ($val as $value) {
@ -766,6 +766,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
case 'audio':
$lcodecs = $this->getMyConfig('voicecodecs');
$allCodecs = $this->FreePBX->Codecs->getAudio();
dbug('FPBX audio', $allCodecs);
break;
case 'video':
$lcodecs = $this->getMyConfig('voicecodecs');
@ -807,11 +808,11 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
$codecs[$c] = false;
}
}
return $codecs;
} else {
//Remove non digits
$final = array();
dbug('codecs', $codecs);
foreach ($codecs as $codec => $order) {
$order = trim($order);
if (ctype_digit($order)) {

View file

@ -387,6 +387,7 @@ trait ajaxHelper {
}
function handleSubmit($request, $validateonly = false) {
dbug('request is:', $request);
$hdr_prefix = 'sccp_';
$hdr_arprefix = 'sccp-ar_';
$save_settings = array();
@ -494,21 +495,48 @@ trait ajaxHelper {
}
}
switch ($key) {
case 'disallow':
if (is_array($value)) {
foreach ($value as $keycodeс => $valcodeс) {
$save_codec[$i] = $keycodeс;
$i++;
};
$tmpv = implode(",", $save_codec);
} else {
$tmpv = $value;
}
if (empty($save_settings['disallow|allow']['data'])) {
$save_settings['disallow|allow']['data'] = $tmpv . "|";
} else {
$save_settings[] = array(
'keyword' => 'disallow|allow',
'data' => $tmpv . "|" .$save_settings['disallow|allow']['data'],
'seq' => $this->sccpvalues['disallow|allow']['seq'],
'type' => $this->sccpvalues['disallow|allow']['type'],
'systemdefault' => $this->sccpvalues['disallow|allow']['systemdefault']
);
unset($save_settings['disallow|allow']['data']);
}
break;
case 'voicecodecs':
case 'vcodec':
foreach ($value as $keycodeс => $valcodeс) {
$save_codec[$i] = $keycodeс;
$i++;
};
$tmpv = implode(";", $save_codec);
if ($tmpv !== $this->sccpvalues['allow']['data']) {
$tmpv = implode(",", $save_codec);
if (empty($save_settings['disallow|allow']['data'])) {
$save_settings['disallow|allow']['data'] = $tmpv;
} else {
$save_settings[] = array(
'keyword' => 'allow',
'data' => $tmpv,
'seq' => $this->sccpvalues['allow']['seq'],
'type' => $this->sccpvalues['allow']['type'],
'systemdefault' => $this->sccpvalues['allow']['systemdefault']
);
'keyword' => 'disallow|allow',
'data' => $save_settings['disallow|allow']['data'] . $tmpv,
'seq' => $this->sccpvalues['disallow|allow']['seq'],
'type' => $this->sccpvalues['disallow|allow']['type'],
'systemdefault' => $this->sccpvalues['disallow|allow']['systemdefault']
);
unset($save_settings['disallow|allow']['data']);
}
break;

View file

@ -9,10 +9,11 @@
$def_val = null;
$dev_id = null;
$sccp_codec = $this->getCodecs('audio', true);
$audio_codecs = $this->getCodecs('audio', true);
$video_codecs = $this->getCodecs('video', true);
$sccp_disalow_def = $this->extconfigs->getExtConfig('sccpDefaults', 'disallow');
$sccp_disalow = $sccp_disalow_def;
$sccp_disallow_def = $this->sccpvalues['disallow|allow']['data'];
$sccp_disallow_def = explode("|",$sccp_disallow_def)[0];
$sccp_disallow = $sccp_disallow_def;
if (!empty($_REQUEST['id'])) {
$dev_id = $_REQUEST['id'];
@ -23,22 +24,22 @@ if (!empty($_REQUEST['id'])) {
$codec_list[$c] = $i;
$i ++;
}
foreach ($sccp_codec as $c => $v) {
foreach ($audio_codecs as $c => $v) {
if (!isset($codec_list[$c])) {
$codec_list[$c] = false;
}
}
}
if (!empty($db_res['disallow'])) {
$sccp_disalow = $db_res['disallow'];
$sccp_disallow = $db_res['disallow'];
}
} else {
$codec_list = $sccp_codec;
$codec_list = $audio_codecs;
}
?>
<!-- TODO: Codec selection has moved to the line level in newer chan-sccp versions and should be moved -->
<!-- Codec selection is at the line level - this page sets site defaults based on chan-sccp defaults -->
<form autocomplete="off" name="frm_codec" id="frm_codec" class="fpbx-submit" action="" method="post">
<input type="hidden" name="category" value="codecform">
<input type="hidden" name="Submit" value="Submit">
@ -55,8 +56,8 @@ if (!empty($_REQUEST['id'])) {
<i class="fa fa-question-circle fpbx-help-icon" data-for="sccp_disallow"></i>
</div>
<div class="col-md-9 radioset">
<input id="sccp_disallow" type="text" name="sccp_disallow" value="<?php echo $sccp_disalow ?>">
<label for="sccp_disallow"><?php echo _("default : " . $sccp_disalow_def) ?></label>
<input id="sccp_disallow" type="text" name="sccp_disallow" value="<?php echo $sccp_disallow ?>">
<label for="sccp_disallow"><?php echo _("default : " . $sccp_disallow_def) ?></label>
</div>
</div>
</div>