Database->query('SELECT * FROM `SystemGPS` WHERE `Id`='.$Item['Value']); if ($DbResult->num_rows > 0) { $DbRow = $DbResult->fetch_assoc(); $Longitude = $this->Explode($DbRow['Longitude']); $Latitude = $this->Explode($DbRow['Latitude']); $Output = ''.$Latitude[0].'°'.$Latitude[1]."'".$Latitude[2].'" '.$Longitude[0].'°'.$Longitude[1]."'".$Longitude[2].'"'; } return $Output; } function OnEdit(array $Item): string { if ($Item['Value'] != '') { $DbResult = $this->Database->query('SELECT * FROM `SystemGPS` WHERE `Id`='.$Item['Value']); if ($DbResult->num_rows > 0) { $DbRow = $DbResult->fetch_assoc(); } else $DbRow = array('Longitude' => 0, 'Latitude' => 0); } else $DbRow = array('Longitude' => 0, 'Latitude' => 0); $Value = $this->Explode($DbRow['Latitude']); $Output = '°'; $Output .= '\''; $Output .= '"
'; $Value = $this->Explode($DbRow['Longitude']); $Output .= '°'; $Output .= '\''; $Output .= '"'; return $Output; } function OnLoad(array $Item): ?string { $Latitude = $this->Implode($_POST[$Item['Name'].'-lat-deg'], $_POST[$Item['Name'].'-lat-min'], $_POST[$Item['Name'].'-lat-sec']); $Longitude = $this->Implode($_POST[$Item['Name'].'-lon-deg'], $_POST[$Item['Name'].'-lon-min'], $_POST[$Item['Name'].'-lon-sec']); $this->Database->query('INSERT INTO SystemGPS (`Latitude`, `Longitude`) VALUES ("'.$Latitude.'", "'.$Longitude.'")'); return $this->Database->insert_id; } function OnCanLoad(array $Item): bool { return array_key_exists($Item['Name'].'-lat-deg', $_POST) and array_key_exists($Item['Name'].'-lat-sec', $_POST) and array_key_exists($Item['Name'].'-lat-min', $_POST) and array_key_exists($Item['Name'].'-lon-deg', $_POST) and array_key_exists($Item['Name'].'-lon-min', $_POST) and array_key_exists($Item['Name'].'-lon-sec', $_POST); } function Explode(float $Float): array { $Degrees = intval($Float); $Float = abs($Float); $Float = ($Float - intval($Float)) * 60; $Minutes = intval($Float); $Float = ($Float - intval($Float)) * 60; $Seconds = round($Float, 3); return array($Degrees, $Minutes, $Seconds); } function Implode($Degrees, $Minutes, $Seconds): float { if ($Degrees < 0) return -(abs($Degrees) + ($Minutes + $Seconds / 60) / 60); else return $Degrees + ($Minutes + $Seconds / 60) / 60; } }