From a6a9850a3cf3a10c87c8c53f7d4fe8d8114500f9 Mon Sep 17 00:00:00 2001 From: steve-lad <72376554+steve-lad@users.noreply.github.com> Date: Mon, 5 Jul 2021 17:08:01 +0200 Subject: [PATCH] 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 --- Sccp_manager.class.php | 5 ++-- sccpManTraits/ajaxHelper.php | 44 +++++++++++++++++++++++++++++------- views/server.codec.php | 19 ++++++++-------- 3 files changed, 49 insertions(+), 19 deletions(-) diff --git a/Sccp_manager.class.php b/Sccp_manager.class.php index c5f755e..104b263 100644 --- a/Sccp_manager.class.php +++ b/Sccp_manager.class.php @@ -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)) { diff --git a/sccpManTraits/ajaxHelper.php b/sccpManTraits/ajaxHelper.php index 78a89d5..bb40b95 100644 --- a/sccpManTraits/ajaxHelper.php +++ b/sccpManTraits/ajaxHelper.php @@ -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; diff --git a/views/server.codec.php b/views/server.codec.php index 6c5e522..f23ef6b 100644 --- a/views/server.codec.php +++ b/views/server.codec.php @@ -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; } ?> - +