mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
url_to_absolute
This commit is contained in:
@@ -45,11 +45,36 @@ class BookCaseTable extends DataTableComponent
|
||||
fn(
|
||||
$row,
|
||||
Column $column
|
||||
) => $row->homepage ? '<a target="_blank" class="underline text-amber-500" href="'.$row->homepage.'">Link</a>' : null
|
||||
) => $row->homepage ? '<a target="_blank" class="underline text-amber-500" href="'.$this->url_to_absolute($row->homepage).'">Link</a>' : null
|
||||
)
|
||||
->html(),
|
||||
BooleanColumn::make('Oranged-Pilled', 'deactivated')
|
||||
->sortable(),
|
||||
];
|
||||
}
|
||||
|
||||
private function url_to_absolute($url)
|
||||
{
|
||||
// Determine request protocol
|
||||
$request_protocol = $request_protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http');
|
||||
// If dealing with a Protocol Relative URL
|
||||
if (stripos($url, '//') === 0) {
|
||||
return $url;
|
||||
}
|
||||
// If dealing with a Root-Relative URL
|
||||
if (stripos($url, '/') === 0) {
|
||||
return $request_protocol.'://'.$_SERVER['HTTP_HOST'].$url;
|
||||
}
|
||||
// If dealing with an Absolute URL, just return it as-is
|
||||
if (stripos($url, 'http') === 0) {
|
||||
return $url;
|
||||
}
|
||||
// If dealing with a relative URL,
|
||||
// and attempt to handle double dot notation ".."
|
||||
do {
|
||||
$url = preg_replace('/[^\/]+\/\.\.\//', '', $url, 1, $count);
|
||||
} while ($count);
|
||||
// Return the absolute version of a Relative URL
|
||||
return $request_protocol.'://'.$_SERVER['HTTP_HOST'].'/'.$url;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user