$device['device_id'])); foreach ($sla_table as $sla_nr => $sla_config) { $query_data = array( 'device_id' => $device['device_id'], 'sla_nr' => $sla_nr, ); $sla_id = dbFetchCell('SELECT `sla_id` FROM `slas` WHERE `device_id` = :device_id AND `sla_nr` = :sla_nr', $query_data); $data = array( 'device_id' => $device['device_id'], 'sla_nr' => $sla_nr, 'owner' => $sla_config['rttMonCtrlAdminOwner'], 'tag' => $sla_config['rttMonCtrlAdminTag'], 'rtt_type' => $sla_config['rttMonCtrlAdminRttType'], 'status' => ($sla_config['rttMonCtrlAdminStatus'] == 'active') ? 1 : 0, 'opstatus' => ($sla_config['rttMonLatestRttOperSense'] == 'ok') ? 0 : 2, 'deleted' => 0, ); // Some fallbacks for when the tag is empty if (!$data['tag']) { switch ($data['rtt_type']) { case 'http': $data['tag'] = $sla_config['rttMonEchoAdminURL']; break; case 'dns': $data['tag'] = $sla_config['rttMonEchoAdminTargetAddressString']; break; case 'echo': $data['tag'] = IP::fromHexString($sla_config['rttMonEchoAdminTargetAddress'], true); break; case 'jitter': if ($sla_config['rttMonEchoAdminCodecType'] != 'notApplicable') { $codec_info = " (" . $sla_config['rttMonEchoAdminCodecType'] . " @ " . preg_replace('/milliseconds/', 'ms', $sla_config['rttMonEchoAdminCodecInterval']) . ")"; } else { $codec_info = ''; } $data['tag'] = IP::fromHexString($sla_config['rttMonEchoAdminTargetAddress'], true) . ":" . $sla_config['rttMonEchoAdminTargetPort'] . $codec_info; break; }//end switch }//end if if (!$sla_id) { $sla_id = dbInsert($data, 'slas'); echo '+'; } else { // Remove from the list $existing_slas = array_diff($existing_slas, array($sla_id)); dbUpdate($data, 'slas', 'sla_id = ?', [$sla_id]); echo '.'; } }//end foreach // Mark all remaining SLAs as deleted foreach ($existing_slas as $existing_sla) { dbUpdate(['deleted' => 1], 'slas', 'sla_id = ?', [$existing_sla]); echo '-'; } echo "\n"; }