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

View file

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

View file

@ -9,10 +9,11 @@
$def_val = null; $def_val = null;
$dev_id = null; $dev_id = null;
$sccp_codec = $this->getCodecs('audio', true); $audio_codecs = $this->getCodecs('audio', true);
$video_codecs = $this->getCodecs('video', true); $video_codecs = $this->getCodecs('video', true);
$sccp_disalow_def = $this->extconfigs->getExtConfig('sccpDefaults', 'disallow'); $sccp_disallow_def = $this->sccpvalues['disallow|allow']['data'];
$sccp_disalow = $sccp_disalow_def; $sccp_disallow_def = explode("|",$sccp_disallow_def)[0];
$sccp_disallow = $sccp_disallow_def;
if (!empty($_REQUEST['id'])) { if (!empty($_REQUEST['id'])) {
$dev_id = $_REQUEST['id']; $dev_id = $_REQUEST['id'];
@ -23,22 +24,22 @@ if (!empty($_REQUEST['id'])) {
$codec_list[$c] = $i; $codec_list[$c] = $i;
$i ++; $i ++;
} }
foreach ($sccp_codec as $c => $v) { foreach ($audio_codecs as $c => $v) {
if (!isset($codec_list[$c])) { if (!isset($codec_list[$c])) {
$codec_list[$c] = false; $codec_list[$c] = false;
} }
} }
} }
if (!empty($db_res['disallow'])) { if (!empty($db_res['disallow'])) {
$sccp_disalow = $db_res['disallow']; $sccp_disallow = $db_res['disallow'];
} }
} else { } 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"> <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="category" value="codecform">
<input type="hidden" name="Submit" value="Submit"> <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> <i class="fa fa-question-circle fpbx-help-icon" data-for="sccp_disallow"></i>
</div> </div>
<div class="col-md-9 radioset"> <div class="col-md-9 radioset">
<input id="sccp_disallow" type="text" name="sccp_disallow" value="<?php echo $sccp_disalow ?>"> <input id="sccp_disallow" type="text" name="sccp_disallow" value="<?php echo $sccp_disallow ?>">
<label for="sccp_disallow"><?php echo _("default : " . $sccp_disalow_def) ?></label> <label for="sccp_disallow"><?php echo _("default : " . $sccp_disallow_def) ?></label>
</div> </div>
</div> </div>
</div> </div>