Fix ports display (#14183)

* Fix ports with deleted device breaking all ports display

* Only filter callable based filters when required
This commit is contained in:
Tony Murray 2022-08-05 09:01:15 -05:00 committed by GitHub
parent 36e7a7793d
commit e9211d93c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 7 deletions

View File

@ -139,7 +139,7 @@ class Url
$text = $label;
}
$content = '<div class=list-large>' . addslashes(htmlentities($port->device->displayName() . ' - ' . $label)) . '</div>';
$content = '<div class=list-large>' . addslashes(htmlentities(optional($port->device)->displayName() . ' - ' . $label)) . '</div>';
if ($description = $port->getDescription()) {
$content .= addslashes(htmlentities($description)) . '<br />';
}
@ -230,7 +230,7 @@ class Url
*/
public static function deviceUrl($device, $vars = [])
{
$routeParams = [is_numeric($device) ? $device : $device->device_id];
$routeParams = [($device instanceof Device) ? $device->device_id : (int) $device];
if (isset($vars['tab'])) {
$routeParams[] = $vars['tab'];
unset($vars['tab']);

View File

@ -146,9 +146,18 @@ abstract class PaginatedAjaxController extends Controller
protected function filter($request, $query, $fields)
{
foreach ($fields as $target => $field) {
if (is_callable($field)) {
$field($query, $request->get($target));
} elseif (($value = $request->get($field)) !== null) {
$callable = is_callable($field);
$value = $request->get($callable ? $target : $field);
// unfiltered field
if ($value === null) {
continue;
}
// apply the filter
if ($callable) {
$field($query, $value);
} else {
$value = $this->adjustFilterValue($field, $value);
if (is_string($target)) {
$query->where($target, $value);

View File

@ -155,7 +155,7 @@ class PortsController extends TableController
'status' => $status,
'device' => Url::deviceLink($port->device),
'port' => Url::portLink($port),
'secondsIfLastChange' => ceil($port->device->uptime - ($port->ifLastChange / 100)),
'secondsIfLastChange' => ceil(optional($port->device)->uptime - ($port->ifLastChange / 100)),
'ifConnectorPresent' => ($port->ifConnectorPresent == 'true') ? 'yes' : 'no',
'ifSpeed' => $port->ifSpeed,
'ifMtu' => $port->ifMtu,

View File

@ -61,7 +61,7 @@ class Port extends DeviceRelatedModel
*/
public function getLabel()
{
$os = $this->device->os;
$os = optional($this->device)->os;
if (\LibreNMS\Config::getOsSetting($os, 'ifname')) {
$label = $this->ifName;