diff --git a/application/Termination/Termination.php b/application/Termination/Termination.php index 0d6b830e5..47313cb5e 100644 --- a/application/Termination/Termination.php +++ b/application/Termination/Termination.php @@ -219,62 +219,60 @@ class Termination extends mfBaseModel { return $code; } - - public function getLineworkportPairs() { - $ports = $this->getProperty("workflowitems")["ports"]->value->value_string; - $ist_port = $this->getProperty("workflowitems")["ist_ports"]->value->value_string; - if(strlen($ist_port)) { - $ports = $ist_port; - } - - if(!$ports) { - return []; - } - - $return = []; - $return["range"] = []; - $return["pairs"] = []; - - $ports = preg_replace('/[^0-9-]+/', "", $ports); - if(strpos($ports, "-") !== false) { - // port range - $this->log->debug("is range"); - $port_parts = explode("-", $ports); - if(is_array($port_parts) && count($port_parts) == 2) { - $from = intval($port_parts[0]); - $to = intval($port_parts[1]); - - if($from > $to) { - $tmp = $from; - $from = $to; - $to = $tmp; + + public function getLineworkportPairs() { + $ports = $this->getProperty("workflowitems")["ports"]->value->value_string; + $ist_port = $this->getProperty("workflowitems")["ist_ports"]->value->value_string; + if(strlen($ist_port)) { + $ports = $ist_port; } - - $range = []; - $pairs = []; - - - - for($i = $from; $i <= $to; $i++) { - $range[] = intval($i); - if($i + 1 <= $to) { - $pairs[] = $i."-".($i+1); - } + + if(!$ports) { + return []; } - - $return["range"] = $range; - $return["pairs"] = $pairs; - } - } else { - // single port - $this->log->debug("not a range"); - $return["range"][] = $ports; + + $return = []; + $return["range"] = []; + $return["pairs"] = []; + + $ports = preg_replace('/[^0-9-]+/', "", $ports); + + $port_parts = false; + if(preg_match('/^(\d+)-(\d+)$/', $ports, $m)) { + $port_parts = [$m[1], $m[2]]; + } + + if(!is_array($port_parts) || count($port_parts) < 2) { + // not a valid port range, treat as single port + $return["range"][] = $ports; + } else { + // valid port range + $from = $port_parts[0]; + $to = $port_parts[1]; + + if($port_parts[0] > $port_parts[1]) { + $from = $port_parts[1]; + $to = $port_parts[0]; + } + + $range = []; + $pairs = []; + + for($i = $from; $i <= $to; $i++) { + $range[] = intval($i); + if($i + 1 <= $to) { + $pairs[] = $i."-".($i+1); + } + } + + $return["range"] = $range; + $return["pairs"] = $pairs; + } + + //var_dump($return);exit; + return $return; + } - - //var_dump($return);exit; - return $return; - - } public function resetProperties() { $this->building = null;